实验环境:

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 //添加实现重定向的配置

nginx index重定向到目录下 nginx重定向不改变url_服务器

[root@ahao abc]#service nginx restart

说明:这里的重定向表示访问web站点主目录下的任意一张后缀为.jpeg的图片,都将重定向到默认页面index.html上。

nginx index重定向到目录下 nginx重定向不改变url_nginx_02


可以再做一个实验

[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //添加实现重定向的配置

nginx index重定向到目录下 nginx重定向不改变url_nginx_03

[root@ahao abc]#service nginx restart

说明:这是我们要访问192.168.1.199web服务器上主站点下abc目录里的图片12,重定向到192.168.1.159web服务器上主站点目录下abc目录下的12图片。

nginx index重定向到目录下 nginx重定向不改变url_服务器_04

这样看来我们的重定向还是成功的。


2、实现反向代理,缓存

缓存的内容是公用信息,不能是私有信息,而且是静态信息而不是动态信息。

[root@ahaonginx-1.0.11]# vim /etc/nginx/nginx.conf //添加实现反向代理的配置
[root@ahao abc]#service nginx restart

nginx index重定向到目录下 nginx重定向不改变url_nginx_05

  [root@ahao abc]#service nginx restart

说明:访问192.168.1.199.的WEB服务,可以直接访问192.168.1.159上的web服务器,

但这不是访问重定向,是1.199服务器实现的代理功能。

nginx index重定向到目录下 nginx重定向不改变url_nginx_06


这是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/

nginx index重定向到目录下 nginx重定向不改变url_nginx_07

现在从代理服务去上访问192.168.1.159WEB服务器的测试速度

[root@ahao abc]#ab -n 10000 http://192.168.1.199/

nginx index重定向到目录下 nginx重定向不改变url_nginx index重定向到目录下_08

   现在我将缓存加上

[root@ahao abc]#yum install httpd-tools  配置缓存命令

nginx index重定向到目录下 nginx重定向不改变url_nginx index重定向到目录下_09

[root@ahao abc]#service nginx restart
[root@ahao abc]#ab -n 10000 http://192.168.1.199/


nginx index重定向到目录下 nginx重定向不改变url_bc_10

这样看来实现代理的缓存就可以是外网用户访问服务器的速度加快。


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 //配置负载均衡

nginx index重定向到目录下 nginx重定向不改变url_bc_11

nginx index重定向到目录下 nginx重定向不改变url_运维_12

测试访问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

nginx index重定向到目录下 nginx重定向不改变url_服务器_13

在location中添加如下命令:

nginx index重定向到目录下 nginx重定向不改变url_nginx index重定向到目录下_14


测试结果

nginx index重定向到目录下 nginx重定向不改变url_nginx_15

两个服务器运行测试都正常

我们可以将web1 down了,再测试:

[root@ahaohtml]# service httpd stop 
Stoppinghttpd:                                           [  OK  ]

测试结果:

nginx index重定向到目录下 nginx重定向不改变url_nginx_16


   这样我们的健康检测才算是正常工了,能有效的防止服务运行down掉,导致信息丢失。




转载于:https://blog.51cto.com/eyessay/1354808