Nginx实现Web反向代理

主要目的:让处于不同网段的服务器和客户端进行交流,使得客户端在访问为web服务器的时候,通过反向代理实现相应的算法,通过客户端的访问需求调度到不同的为web服务器上,被调度器调度的web才可以响应客户端的请求,web服务器才处理完请求之后,则会返回得nginx代理服务器,服务器在把相应的信息传送给客户端。

                


举例说明:

条件:需要使用四台主机,客户端,nginx代理,web服务器,主机上的配置条件按照上图所配置。


在主机web1上的操作:

[root@web1 ~]# yum -y install httpd                                    -----安装httpd

[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html    -----在配置文件中添加"192.168.2.100"

[root@web1 ~]# systemctl restart httpd                                 ------启动http服务

[root@web1 ~]# firewall-cmd --set-default-zone=trusted                 ------关闭防火墙

[root@web1 ~]# setenforce 0 -------关闭selinux


在主机web2上的操作:

[root@web2 ~]# yum -y install httpd                                   -----安装httpd

[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html  -----在配置文件中添加"192.168.2.200"

[root@web2 ~]# systemctl restart httpd                               ------启动http服务

[root@web2 ~]# firewall-cmd --set-default-zone=trusted                ------关闭防火墙

[root@web2 ~]# setenfo                                              -------关闭selinux



nginx代理服务器的配置

[root@proxy ~]vim /usr/local/nginx/conf/nginx.conf

  1. http {
  2. upstream webserver {                       ------用于定义集群upstream  集群的名字webserver
  3. ip_hash; ------可以添加调度算法,默认的轮询算法,ip_hash使得相同的客户端访问相同服务器
  4. server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=30;         -----集群内的服务器
  5. server 192.168.2.200:80 weight=1 max_fails=1 fail_timeout=30;          -----集群内的服务器
  6. server 192.168.2.101 down; ----标记该web服务器不参与集群
  7. 注意:调度器是更加权重的数值去调度相应的web服务器,越大调度的次数越多,max_fails叛定是否连接好坏,设置连接数,如果代理服务器调度相应的服务器超过设置的连接数,则判定web服务器已经坏掉。fail_timeout设置失败超时时间,单位为秒,每隔设置的秒去连接上次失败的主机,如果连接成功,则分配任务给主机,相当于把原来判定坏掉的web服务器在重新加入到集群中。
  8. }
  9. server {                             -----------定义集群中的具体服务器和端口
  10. listen        80;
  11. server_name localhost;
  12. location / {
  13. proxy_pass http://webserver;    -------通过proxy_pass将用户的请求转发给webserver集群
  14. }
  15. [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 重新期待服务(保证服务开启不然 )


 客户端用于测试结果

[root@client ~]# curl http://192.168.4.5       

在不添加ip_hash算法的时候,可以可到的效果是每次算法的时候都可以对不同的客户端访问,在添加该算法的时候,则是同一个浏览器只能访问同一个web服务器。





猜你喜欢

转载自blog.csdn.net/zhydream77/article/details/81008097