Nginx的安装使用详解

Nginx是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP/UDP代理服务器。

当nginx作为基本服务器功能:
  • 提供静态和索引文件,自动索引;打开文件描述符缓存;
  • 使用缓存加速反向代理;负载均衡和容错;
  • 通过缓存加速的CGI,UWSGI,SCGI和内存缓存服务器来加速支持;负载均衡和容错;
  • 模块化架构。筛选器包括压缩,字节范围,分块相应,XSLT,SSl和图像转换筛选器。如果单个页面中的多个SSl包含内容由代理或快速的CGI/uwsgi/SCGI服务器处理,则可以并行处理这些内容;
  • 支持HTTP/2,具有加权和基于依赖关系的优先级。

而我们常用在生产环境中常用于nginx的反向代理的特点,来将nginx作为负载均衡服务器,用来搭建集群架构。

linux下Nginx的安装

首先我们要准备好Nginx源码来进行二进制的安装,如果没有包可以去官网上进行下载。

[root@test ~]# yum -y install gcc make pcre-devel openssl-devel
[root@test lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@test lnmp_soft]# cd nginx-1.12.2/
[root@test nginx-1.12.2]# ls 
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@test nginx-1.12.2]# ./configure --with-stream --with-http_stub_status_module   #必须是要在当前目录下进行./configure配置
# --with-stream模块是添加四层代理模块,可以用来创建其他业务集群,--with-http_stub_status_module此模块可以用来查看网站后台数据。
[root@test nginx-1.12.2]# make && make install  #进行编译和安装。
[root@test nginx-1.12.2]# yum install -y php php-rpm  #这里我们可以下载php-rpm这个插件可以实现nginx解析php网页内容

在nginx-1.12.2这个文件夹里是拥有configure这个可执行脚本文件,它有很多选项,在待安装的源码目录下使用命令。/configure -help可以输出详细的选项列表。

还可以使用选项–prefix来配置安装目录。

格式例如:

[root@test nginx-1.12.2]# ./configure  --prefix==/usr/local/test

上面我们解包的时候并没有指定路径,所以默认会安装在/usr/local/nginx下,这个路径下我们可以执行对nginx的管理

[root@test nginx-1.12.2]# cd /usr/local/nginx/   
[root@test nginx]# ls 
conf  html  logs  sbin   
#这里的conf文件是放置nginx的配置文件的    html文件时放置nginx的网页内容文件的      logs时放置日志的      sbin是放置nginx的执行文件的

对于nginx启动关闭等使用:

[root@test nginx]# sbin/nginx   #开启nginx
[root@test nginx]# sbin/nginx -s reload   #重启nginx
[root@test nginx]# sbin/nginx -s stop   #关闭nginx

Nginx针对与php的解析:

首先我们想要达到进行php网页的解析,就需要到配置文件里面进行更改

[root@test nginx]# vim conf/nginx.conf
 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }
#可以将这一行进行更改,将#注释全部删除,将69行删除,将70行fastcgi_params改成fastcgi.conf

最后该为

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }

如何的话,他就会去接收php页面的内容并由php-fpm交给php去进行解析,所以php-fpm必须处于开启状态

Nginx搭建集群,实现负载均衡

可以在第34行添加如下内容格式:

upstream web {     #创建集群,集群的名字叫做web
server 192.168.4.4:80;   #这里说明服务器IP地址和后面的:80代表的是通过80端口
server 192.168.4.5:80;   #这里是第二台
}

在添加完成后的第47行进行集群的调用:

location / {
proxy_pass http://web;    调用集群
           root   html;
           index  index.html index.htm;
}

然后在进行nginx的重启就可以实现了nginx的集群搭建了,集群默认是以轮询的方式进行访问,之后可以开启nginx集群的一些功能:

集群优化:
upstream web {     
server 192.168.4.4:80 weight=2;   
server 192.168.4.5:80;   
}
#加权功能,权重越大任务的分配了就越大,可以为性能较强的集群主机配置权重
配置健康检查:
upstream web {     
server 192.168.4.4:80 max fails=2 fail_timeout=30;   
server 192.168.4.5:80;   
}
#检测两次如果失败,则认为集群中的主机故障,之后等待30秒再次测试
相同客户机访问相同服务器:
upstream web {
ip_hash;
server 192.168.4.4:80;   
server 192.168.4.5:80;   
}
#相同客户机访问相同服务器,让一个客户机访问集群时锁定一个后台服务器,避免重复登陆的问题。
添加down标记:
upstream web {
server 192.168.4.4:80;   
server 192.168.4.5:80 down;   
}
#添加down标记可以让集群主机暂时不参与集群活动

查看网站后台数据

利用之前我们安装的模块–with-http_stubj_module的功能配置nginx。

打开配置文件在local里加入以下内容:

location /status {
stub_status on;  #显示后台的数据
allow 192.168.2.5;  #允许2.5主机查看
deny all;  #拒绝其他主机查看
}

然后就可以利用curl 192.168.2.5/status 进行查看了。

对应内容分别是:

Active connections:当前活动的连接数量(当前又多少用户访问该网站)

Accepts:已经接受客户端的连接总数量。

Handled:已经处理客户端的连接总数量。

Requests:客户端发送的请求数量。

Reading:当前服务器正在读取客户端请求头的数量。

Writing:当前服务器正在写响应信息的数量。

Waiting:当前多少客户端在等待服务器的相应。