一.nginx概念:
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。 **
二.nginx常用功能:
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
3、web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
三.Nginx的安装:
1.下载安装包,编辑Nginx内部源文件:
nginx-1.14.0.tar.gz
2.在【server1】里安装*gcc,pcre-devel,openssl-devel服务:*
3.进行源码编译:
4.查看编译后文件大小,添加软连接:
5.检查语法的正确性,启动Nginx:
6.编辑共享文件:
7.在真机里进行访问测试:
四.Nginx的轮询:
1.查看CPU个数与处理文件最大限度:
2.CPU个数为1,最大并发数47356:
3.系统Nginx处理文件限定到65536:
4.建议Nginx用户组:
5.添加待访问服务器,添加监听端口:
6.查看语法,重启服务:
[root@server1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload
7.查看真机的解析:
8.打开后端服务器【server2】【server3】httpd服务:
【测试】:
1.真机上测试:
2.网页上进行测试:
3.增加权重进行测试:
[root@server1 conf]# vim nginx.conf
五.给nginx添加Sticky扩展模块:
Sticky工作原理 :
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route
1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2.后端服务器处理完请求,将响应数据返回给nginx。
3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4.客户端接收请求,并保存带route的cookie。
5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。
1.解压安装包:
2.进行编译:
3.发送.conf文件发送到默认目录中:
4.编辑配置文件,添加sticky模块:
5.开启服务:
[root@server1 conf]# /opt/nginx/sbin/nginx -t #检测语句
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
[root@server1 conf]# /opt/nginx/sbin/nginx #开启nginx
【测试】:
每一个IP绑定一个浏览器,每台后端真实服务器都会有一个唯一的route值,所以不管你真实服务器前端有几个装了sticky的nginx代理,它都是不会变化的. 这个cookie是会话方式的,所以你浏览器关闭了,服务器会给你重新分配一台服务器。