首页 > 代码库 > RHEL6.4 搭建Nginx反向代理服务器

RHEL6.4 搭建Nginx反向代理服务器

实验需求:使用nginx搭建反向代理服务器,把用户的请求分发给后端的web服务器组192.168.100.1和192.168.100.2

                                                                          

 内网web服务器192.168.100.1          内网接口eth0(192.168.1.254)

    ----------- nginx反向代理服务器------------ 公网客户端1.1.1.1

 内网web服务器192.168.100.2           公网接口eth1(1.1.1.254)




一.部署内网的网站服务器192.168.100.1

可以使用apache或nginx等软件搭建,此实验采用nginx搭建

1.安装软件并编辑配置文件

# vim /usr/local/nginx/conf/nginx.conf

http {

   ……

     server {

        listen       80;           

        server_name  www.jinjianjun.com

 

        location / {

            root   html;

            index  index.html index.htm;

        }


     }

   ……


2.制作测试网页文件

# echo 192.168.100.1 > /usr/local/nginx/html/index.html 


3.启动服务

# cd /usr/local/nginx/sbin

# ./nginx



二.部署内网的网站服务器192.168.100.2

1.安装软件并编辑配置文件

# vim /usr/local/nginx/conf/nginx.conf

http {

   ……

     server {

        listen       80;

        server_name  www.jinjianjun.com            

        location / {

            root   html;

            index  index.html index.htm;

        }


     }

   ……


2.制作测试网页文件

# echo 192.168.100.2 > /usr/local/nginx/html/index.html  //为了测试效果,2台服务器上创建不同的网页

 


3.启动服务

# cd /usr/local/nginx/sbin

# ./nginx



三.配置nginx反向代理服务器

1.安装软件并编辑配置文件

# vim /usr/local/nginx/conf/nginx.conf

……

http {

    ……

    upstream sergrp {             //定义源服务器组

        server 192.168.100.1:80;

        server 192.168.100.2:80;

    }

    server {

        listen       80;

        server_name  www.jinjianjun.com;   //web主机名

 

        location / {

            root   html;

            index  index.html index.htm;

            proxy_pass http://sergrp;      //调用服务器组

    ……



2.释放80端口并启动服务

# service httpd stop              //本服务器若已启动web服务则关闭,或将其开启在别的端口

# chkconfig httpd off

# cd /usr/local/nginx/sbin

# ./nginx



三.客户端1.1.1.1测试

# vim /etc/hosts           //通过DNS解析或在hosts文件里指定

1.1.1.254 www.jinjianjun.com


# elinks -dump http://www.jinjianjun.com

   192.168.100.2

# elinks -dump http://www.jinjianjun.com

   192.168.100.1

# elinks -dump http://www.jinjianjun.com

   192.168.100.2

# elinks -dump http://www.jinjianjun.com

   192.168.100.1


测试结果:nginx默认采用轮询的分发策略,默认不缓存数据。



四.nginx代理服务器分发请求的方式


轮询(默认的):每个请求按时间顺序逐一分配到不同的后端服务器 ,如果后断服务器down掉能自动剔除


Weight :指定轮询几率,权重和访问比率成正比 通常用于后端服务器性能不同的情况默认值为1


ip_hash:每个请求按访问ip的hash结果分配,这样可以让每个访客固定访问一个后端服务器,可以解决session的问题


Fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配 (nignx默认不支持此方式,需要安装第三方软件)



五.设置后端服务器的状态


down :表示当前的server暂时不参与负载


max_fails :允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误


fail_timeout :max_fails次失败后,暂停提供服务的时间


backup :其他所有的非backup机器down或者忙的时候 请求会发给backup机器 所有这台机器压力会最轻



六.设置服务器组状态


upstream   sergrp  {

        #ip_hash;

        #server 192.168.100.1:80  weight=2; 

        server 192.168.100.2:80   down;

        server 192.168.100.3:80;

        server 192.168.100.4:80   backup;

        server 192.168.100.5:80   max_fails=2   fail_timeout=30;

}