Nginx反向代理,URL重定向,负载均衡


实验环境:

Vmware10Centos6.4-64位最小化安装。软件包需求:

        Nginx版本:nginx-1.0.11.tar

        Healthchekhealthcheck_nginx_upstreams-master

实验过程:

安装nginx

[root@ahao ~]#yum install pcre-devel openssl-devel �Cy //这是安装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/

        [[email protected]]# patch -p1

        </tmp/healthcheck_nginx_upstreams-master/nginx.patch//healthchek的补丁添加上

        [root@ahao~]# groupadd -r nginx

[root@ahao ~]#useradd -r -g nginx -s/sbin/nologin -M nginx

        [[email protected]]#

./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 \

                            --add-module=/tmp/healthcheck_nginx_upstreams-master//添加健康监测模块

        [[email protected]]# mkdir -pv /var/tmp/nginx/client //建立nginx需要的临时文件

        [[email protected]]# make && make install

        [[email protected]]# vim /etc/init.d/nginx

[[email protected]]# chmod a+x /etc/init.d/nginx

[[email protected]]# service nginx start

the nginx serveris starting......[OK]

nginx配置:

1、实现重定向

[[email protected]]# vim /etc/nginx/nginx.conf //添加实现重定向的配置

wKiom1LkUyXCo7biAACrNGlnNVA133.jpg

[root@ahao abc]#service nginx restart

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

wKioL1LkUxPBT19YAACwqNYv7Sc063.jpg


可以再做一个实验

[[email protected]]# vim /etc/nginx/nginx.conf //添加实现重定向的配置

wKioL1LkU0GDcGISAAC6IgXAQRc962.jpg

[root@ahao abc]#service nginx restart

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

wKiom1LkU0rBAoq1AAGqiGKEtSE224.jpg

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


2、实现反向代理,缓存

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

[[email protected]]# vim /etc/nginx/nginx.conf //添加实现反向代理的配置

[root@ahao abc]#service nginx restart

wKiom1LkU3-x5BODAABbSVEi7Ec766.jpg

  [root@ahao abc]#service nginx restart

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

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

wKioL1LkU3XDubxdAAI-RNruxK0313.jpg


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

wKiom1LkU_myjjPSAAIu9hVqBjM942.jpg

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

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

wKiom1LkVAWR3K1YAAI8eXLkz7g210.jpg

   现在我将缓存加上

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

wKiom1LkVCzzaMVcAAEXhSWvU1Q525.jpg

[root@ahao abc]#service nginx restart

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


wKioL1LkU-_gANSjAAJJbhwA2g0335.jpg

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


3、实现负载均衡

   实现负载均衡的模块是upstream模块、

   现在我们需要两台web服务器,一台是192.168.1.159,一台是192.168.1.139

   我在1.159服务器上添加默认页面index.html写入:“web1

   我在1.139服务器上添加默认页面index.html写入:“web2

[[email protected]]# vim /etc/nginx/nginx.conf //配置负载均衡

wKioL1LkVB-yM-dtAAC6m9qT8_g725.jpg

wKiom1LkVETQ2LGGAADdlkf9wyo462.jpg

测试访问web服务器,(因为这两个服务器的权重是一样的,所以你访问服务器应该没刷新一次就会变一个网页:是web1,web2之间的转换)。

如果你想要测试一下改变权重的话,可以在配置文件中http中刚才配置的backend组里的任意一个web服务器ip后加上一个参数weight=number】。


现在还有必然的需要就是,一台服务器突然失效了,那连接它的服务将继续发送信息给它就会导致信息丢失,这样的情况是我们所不希望的,所以这里我们引入健康监测的模块,这个模块的作用就是监测服务器的运行是否正常。如果不正常,down了,那就需要它通知,其他服务器,让其他服务器来接受消息,消息不再发送给down掉的服务器。

配置如下:

建立探测页面(web1 web2 正常运行)

web1服务器上站点主目录下建一个health文件,写入“health  web1

web2服务器上站点主目录下建一个health文件,写入“health  web2

[[email protected]]# vim /etc/nginx/nginx.conf

wKioL1LkVM_jRyw1AAInLgfdwXI211.jpg

location中添加如下命令:

wKiom1LkVQahwrmlAAA4FW6Yhno552.jpg


测试结果

wKioL1LkVP_DLcDiAAIcvXVrAFQ264.jpg

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

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

[root@ahaohtml]# service httpd stop

Stoppinghttpd:                                           [  OK  ]

测试结果:

wKiom1LkVUHjRbapAAKPy_N9yxg637.jpg


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



你可能感兴趣的:(nginx,负载均衡,重定向,缓存,反向代理,健康监测)