Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
#########################nginx源码编译#######################
所需安装包:nginx-1.14.0.tar.gz
tar zxf nginx-1.14.0.tar.gz
ls ##查看是否解压
cd nginx-1.14.0/src/core/
ls
vim nginx.h ## 删除掉14行最后的NGINX_VERSION ,这样可以不对外显示你的版本号
cd nginx-1.14.0/auto/cc/
ls
vim gcc ##将172行 CFLAGS="$CFLAGS -g"注释掉
源码编译及安装
cd nginx-1.14.0
./configure --help ###查看编译时的帮助命令
yum install gcc -y ###解决编译过程中需要安装的软件
yum install -y pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install
cd /usr/local/nginx
ls
du -sh ##查看刚装文件的大小
cd sbin/
pwd
ln -s /usr/local/nginx/sbin/nginx /sbin/ ##做软连接
nginx -t ###检测语法
nginx ##打开nginx
nginx -s stop ###关闭nginx
cd /usr/local/nginx/html/ ###nginx的默认发布目录
测试:(测试时要打开nginx)
在网站访问 www.westos.org www.westos.org/test.html
cd /usr/local/nginx/html/ ###nginx的默认发布目录
vim test.html
########################nginx实现负载均衡######################
cd /usr/local/nginx/conf/
lscpu ##可以查看主机的cpu数
vim /etc/security/limits.conf
写入:
nginx - nofile 65536
ngnix -s reload ###重新加载
nginx -t ##检查语法
nginx -s stop ##关闭nginx
useradd -M -d /usr/local/nginx/ nginx ###建立一个nginx用户
id nginx ###查看用户nginx
vim nginx.conf ##编辑nginx主配置文件(在此之前添加了一颗cpu,总共两个)
nginx -s reload
测试轮询:for i in {1..10};do curl www.westos.org;done
加上权重后的效果:for i in {1..10};do curl www.westos.org;done
添加ip_hash后的效果((同一个ip访问后端服务器不变):for i in {1..10};do curl www.westos.org;done
###################在nginx中静态添加模块stick#######################
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route(添加sticky算法后,在用浏览器访问时,其通常会缓存信息,结果不会轮询它是针对浏览器的,更换浏览器后它会改变)
1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2.后端服务器处理完请求,将响应数据返回给nginx。
3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4.客户端接收请求,并保存带route的cookie。
5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。
1.关闭之前的nginx
nginx -s stop
2.解压tar zxf nginx-1.10.1.tar.gz (nginx稳定版)
解压tar zxf nginx-sticky-module-ng.tar.gz(nginx sticky模块)
3.编译安装(因为之前安装的版本不支持sticky算法,所以要重新源码安装一个nginx版本,为了避免覆盖之前的nginx)
cd nginx-1.10.1
./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
--add-module=/root/nginx-sticky-module-ng ##必须改变安装路径,不然会覆盖之前的nginx,而且之前选择
##的参数这次也必须选择(这叫静态添加模块)
make && make install
4.编辑配置文件加上sticky算法(在这儿为了方便把之前的复制过来)
cd /opt/nginx/conf/
cp /usr/local/nginx/conf/nginx.conf .
vim nginx.conf
5.在浏览器中测试
/opt/nginx/sbin/nginx -t ##新的nginx命令的绝对路径
/opt/nginx/sbin/nginx ##开启nginx
在浏览器中:www.westos.org 然后按F12
可见浏览器中将后端服务器中的信息缓存,以便下次使用。