您的位置:首页 > 运维架构 > 反向代理

Ngnix的反向代理,url重定向,负载均衡的实现

2014-01-26 08:11 351 查看
环境:centos-6.4-x86_64
软件:nginx-1.0.11healthcheck_nginx_upstreams-master
拓扑图:


Ip地址规划:
反向代理服务器连接外网的地址:192.168.1.118,连接内网的地址:192.168.29.20
Server1的地址:192.168.29.200
server2的地址:192.169.29.201
解压healthcheck_nginx_upstreams-master到tmp目录,然后安装nginx
解压nginx,然后切换到解压后的目录执行
patch -p1</tmp/healthcheck_nginx_upstreams-master/ nginx.patch为nginx打上补丁,然后执行
./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/
完成之后执行make&& make install,完成后创建nginx组和nginx用户
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -Mnginx
在/etc/init.d/目录下编写一个名为nginx的shell脚本,给以可执行权限
将nginx添加到chkconfig 管理 chkconfig --add nginx
到这里nginx的安装就完成了。
接下来先介绍nginx重定向的实现。
如果想实现访问跟站点下的图片文件时,重定向到一个页面,编辑nginx的配置文件



然后测试



被重定向到index.html页面上了。
如果访问某台服务器上某个目录下的某个文件被重定向到另一台服务器上的想对应的目录下的文件。
在这里我们另一台服务器的ip地址为192.168.29.200 在这台服务器的跟站点目录下有abc目录和def目录,在这两个目录中都有两个jpg文件。



当我们访问192.168.29.20/abc/1.jpg时会被重定向到http://192.168.29.200/abc/1.jpg
访问


访问成功后



接下来介绍反向代理。通过反向代理可以是内网中的服务器提供给外部用户使用。



在192.168.29.200服务器的web跟站点下有一个index.html文件,在这个文件里面有“hello”
访问结果如下:



从图中可以看出已经访问成功。
为反向代理增加缓
语法: proxy_cache_path path [levels=levels]keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number][loader_sleep=time] [loader_threshold=time];
先用压力测试测试一下在没有缓存的情况下访问速度



接下来做缓存






设置完成后,先进行一次访问,产生缓存,然后进行压力测试



接下来介绍nginx负载均衡和健康检测
在nginx的配置文件中添加如下图内容,在全局中用upstream指定服务器的地址,然后在location中引用






做完这些就可以实现负载均衡,但是当其中一台服务器出现故障是,前端反向代理服务器仍然会继续向故障服务器发送数据,这样会导致一些用户无法访问,因此要在反向代理服务器上实现健康检测,当服务器出现故障时不再向故障服务器发送数据,所以我们还要在nginx的配置文件中启用健康检测,并且在两个服务器的站点根目录下创建一health页面,内容随便写就可以。






那我们来测试一下,在两台服务器上分别有内容为“hello”的html页面和“helloword”的html页面






从图中看都可以访问到,假如我们的192.168.29.201服务器坏掉了,我们可以看到状态




本文出自 “小宝_” 博客,请务必保留此出处http://mading.blog.51cto.com/8252187/1354807
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: