潘景

Nginx基本使用
一. Nginx简介Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务...
扫描右侧二维码阅读全文
14
2019/02

Nginx基本使用

一. Nginx简介

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二. Nginx安装

注:以下操作均在Centos7.x系统下完成。

在Centos7.x系统上,安装Nginx需要先添加Nginx资源库,执行以下命令。

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

接下来安装Nginx。

yum install nginx

测试Nginx服务是否安装成功,执行以下命令查看。

ps -ef | grep nginx

出现下图所示结果表示安装成功。

此时可以打开浏览器,输入主机IP进行访问,如果出现以下情况,说明防火墙配置有问题。

这时,有两种解决办法,推荐第一种。

  1. 由于Nginx服务器默认走的80端口,在此放行80端口。
firewall-cmd --add-port=80/tcp
  1. 关闭防火墙
service firewalld stop

此时,再输入主机ip进行访问,发现可以访问成功。

至此,Nginx安装成功。

三. Nginx虚拟主机配置

如果想要配置虚拟主机并通过www.panjingg.com进行访问,需要在/etc/nginx/conf.d目录下新建panjingg.conf文件,添加以下内容。

server {
    # 监听端口
    listen       80;
    # 域名
    server_name  www.panjingg.test;
    # 网站内容存放根目录
    root   /data/www;
    # 首页
    index  index.html index.htm;

}    

修改完配置文件之后,需要对服务重启使配置生效,执行以下命令。

service nginx restart

由于系统没有/data/www目录,所以接下来需要创建/data/www目录,并在目录下创建一个index.html文件进行测试。

<!-- index.html -->
<h1>这是一个测试页面</h1>

建议大家不要用root用户操作,最好创建一个网站管理员,并赋予其对/data/www目录的所有权限。

完成以上步骤后,打开浏览器,输入www.panjingg.test进行访问,发现将会报错。

原因是没有使用DNS进行解析,这里为了演示方便,修改了hosts文件,以windows系统为例,以管理员权限打开C:\Windows\System32\drivers\etc\hosts文件,在末尾添加如下内容:

# 主机IP 域名
192.168.0.121 www.panjingg.test 

添加完成后保存,打开浏览器,输入www.panjingg.test,页面正常显示。

如果想要配置多域名多端口进行访问的话,仅需要简单修改panjingg.conf文件并重启nginx服务即可,详细配置如下。

server {
    # 可以通过80端口访问(http默认走的80端口)
    listen       80;    
    # 需要在防火墙中放行9999端口才能访问(放行端口的操作在上面介绍过)
    listen       9999;
    # 可以通过 www.panjingg.test 以及 www.panjingg2.test 进行访问
    server_name  www.panjingg.test www.panjingg2.test;
    root   /data/www;
    index  index.html index.htm;
}

四. Nginx伪静态配置

伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。

Nginx伪静态实现步骤:

  1. 编辑上述步骤中创建的/etc/nginx/conf.d/panjingg.conf文件,具体如下。
server {
    listen       80;
    listen       9999;
    server_name  www.panjingg.test www.panjingg2.test;
    root   /data/www;
    index  index.html index.htm;
    location / {
        rewrite ^(.*)\.jsp$ /index.html;
    }
}
  1. 重启服务使配置生效。
service nginx start

打开浏览器,进行测试。

至此,伪静态配置成功。

五. Nginx日志配置

Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。在此以access_log为例简单讲解一下Nginx日志的配置。

  1. 打开/etc/nginx/nginx.conf文件,具体修改如下。
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    # 我们自行定义的日志格式。
    log_format  panjingg  '$remote_addr - "$http_user_agent"';
    
    # 如果在此配置将会是全局的,不推荐这种做法,了解即可。
    # access_log  /var/log/nginx/access.log  panjingg;

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
  1. 编辑/etc/nginx/conf.d/panjingg.conf文件,具体如下。
server {
    listen       80;
    listen       9999;
    server_name  www.panjingg.test www.panjingg2.test;
    root   /data/www;
    index  index.html index.htm;
    access_log /var/log/nginx/access_panjingg.log panjingg;
    location / {
        rewrite ^(.*)\.jsp$ /index.html;
    }
}

推荐上述这种做法,可以根据每一个虚拟主机配置相应的日志文件。

  1. 重启服务使配置生效。
service nginx start

可以发现在/var/log/nginx/目录下生成了一个access_panjingg.log文件,此时它还是空的,让我们访问浏览器http://www.panjingg.test,然后再打开access_panjingg.log文件,会发现文件中生成了以上面自定义格式形式的日志。

六. Nginx反向代理与负载均衡

使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器之一上,从而达到负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web 服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。

  1. 编辑/etc/nginx/conf.d/panjingg.conf文件,具体如下。
upstream panjingg_hosts{
    # 访问www.panjingg.test或www.panjingg2.test的请求将被转发到以下服务器进行处理
    # 2/3请求47.94.110.76:80 1/3请求192.168.0.121:80
    server 47.94.110.76:80 weight=2;
    server 192.168.0.121:80 weight=1;
}

server {
    listen       80;
    listen       9999;
    server_name  www.panjingg.test www.panjingg2.test;
    root   /data/www;
    index  index.html index.htm;
    access_log /var/log/nginx/access_panjingg.log panjingg;
    location / {
        # rewrite ^(.*)\.jsp$ /index.html;
        # 指定代理
        proxy_pass http://panjingg_hosts;
    }   
}   
  1. 重启服务使配置生效。
service nginx start

温馨提醒,使用负载均衡时一定要使各个服务器数据同步。

Last modification:March 11th, 2019 at 10:19 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment