实验环境:
Vmware10下Centos6.4-64位最小化安装。软件包需求:
版本:nginx-1.0.11.tar
:healthcheck_nginx_upstreams-master
实验过程:
安装nginx:
[root@ahao ~]#yum install pcre-devel openssl-devel –y //这是安装nginx需要的软件包
[root@ahao~]# unzip healthcheck_nginx_upstreams-master.zip
[root@ahao~]# mv healthcheck_nginx_upstreams-master /tmp/
[root@ahao~]# tar -zxvf nginx-1.0.11.tar.gz -C/usr/local/src/
[root@ahaonginx-1.0.11]# patch -p1
将healthchek的补丁添加上
[root@ahao~]# groupadd -r nginx
[root@ahao ~]#useradd -r -g nginx -s/sbin/nologin -M nginx
[root@ahaonginx-1.0.11]#
./configure \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/\
--with-pcre \
添加健康监测模块
建立nginx需要的临时文件
[root@ahaonginx-1.0.11]# make && make install
[root@ahaonginx-1.0.11]# vim /etc/init.d/nginx
[root@ahaonginx-1.0.11]# chmod a+x /etc/init.d/nginx
[root@ahaonginx-1.0.11]# service nginx start
the nginx serveris starting......[OK]
nginx配置:
1、实现重定向
[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //添加实现重定向的配置
[root@ahao abc]#service nginx restart
说明:这里的重定向表示访问web站点主目录下的任意一张后缀为.jpeg的图片,都将重定向到默认页面index.html上。
可以再做一个实验
[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //添加实现重定向的配置
[root@ahao abc]#service nginx restart
说明:这是我们要访问192.168.1.199web服务器上主站点下abc目录里的图片12,重定向到192.168.1.159web服务器上主站点目录下abc目录下的12图片。
这样看来我们的重定向还是成功的。
2、实现反向代理,缓存
缓存的内容是公用信息,不能是私有信息,而且是静态信息而不是动态信息。
[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //添加实现反向代理的配置
[root@ahao abc]#service nginx restart
[root@ahao abc]#service nginx restart
说明:访问192.168.1.199.的WEB服务,可以直接访问192.168.1.159上的web服务器,
但这不是访问重定向,是1.199服务器实现的代理功能。
这是192.168.1.159web服务器上的默认主站点页面。
接下来我们实现缓存的测试:
首先我们先不实现缓存来测试代理服务器的访问速度,
[root@ahao abc]#yum install httpd-tools 安装测试工具ab
我们先从本地来测试访问192.168.1.159WEB服务器的速度
[root@ahao abc]#ab -n 10000 http://192.168.1.159/
现在从代理服务去上访问192.168.1.159WEB服务器的测试速度
[root@ahao abc]#ab -n 10000 http://192.168.1.199/
现在我将缓存加上
[root@ahao abc]#yum install httpd-tools 配置缓存命令
[root@ahao abc]#service nginx restart
[root@ahao abc]#ab -n 10000 http://192.168.1.199/
这样看来实现代理的缓存就可以是外网用户访问服务器的速度加快。
3、实现负载均衡
实现负载均衡的模块是upstream模块、
现在我们需要两台web服务器,一台是192.168.1.159,一台是192.168.1.139
我在1.159服务器上添加默认页面index.html写入:“web1”
我在1.139服务器上添加默认页面index.html写入:“web2”
[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //配置负载均衡
测试访问web服务器,(因为这两个服务器的权重是一样的,所以你访问服务器应该没刷新一次就会变一个网页:是web1,与web2之间的转换)。
如果你想要测试一下改变权重的话,可以在配置文件中http中刚才配置的backend组里的任意一个web服务器ip后加上一个参数weight=【number】。
现在还有必然的需要就是,一台服务器突然失效了,那连接它的服务将继续发送信息给它就会导致信息丢失,这样的情况是我们所不希望的,所以这里我们引入健康监测的模块,这个模块的作用就是监测服务器的运行是否正常。如果不正常,down了,那就需要它通知,其他服务器,让其他服务器来接受消息,消息不再发送给down掉的服务器。
配置如下:
建立探测页面(web1 web2 正常运行)
在web1服务器上站点主目录下建一个health文件,写入“health web1”
在web2服务器上站点主目录下建一个health文件,写入“health web2”
[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf
在location中添加如下命令:
测试结果
两个服务器运行测试都正常
我们可以将web1 down了,再测试:
[root@ahaohtml]# service httpd stop
Stoppinghttpd: [ OK ]
测试结果:
这样我们的健康检测才算是正常工了,能有效的防止服务运行down掉,导致信息丢失。
转载于:https://blog.51cto.com/eyessay/1354808