Nginx实现反向代理和负载均衡

来源:互联网 发布:孕期食谱软件 编辑:程序博客网 时间:2024/05/17 01:02

反向代理

什么是正向代理。

正向代理,代理的是客户端。

客户端想上网,但上不了,代理服务器可以上网,那就让代理服务器去取回数据然后返回给客户端。典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。

反向代理

反向代理,代理的是服务端。

客户端访问的是代理服务器,然后代理服务器从服务器中获取数据返回给客户端,代理服务器决定哪台服务器提供服务

Nginx实现反向代理

两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。

两个域名是www.sina.com.cn和www.sohu.com

nginx服务器的地址为192.168.110.128

修改hosts,添加

192.168.110.128 www.sina.com.cn192.168.110.128 www.sohu.com

安装两个tomcat一个端口号为8080,一个为8081。分别修改其index.jsp

<h1>${pageContext.servletContext.serverInfo}-sina</h1><h1>${pageContext.servletContext.serverInfo}-souhu</h1>

然后修改nginx.conf,添加

    upstream sina{        server 192.168.110.128:8080;    }    server {        listen       80;        server_name  www.sina.com.cn;        location / {            proxy_pass   http://sina;            index  index.html index.htm;        }    }    upstream sohu{        server 192.168.110.128:8081;    }    server {        listen       80;        server_name  www.sohu.com;        location / {            proxy_pass   http://sohu;            index  index.html index.htm;        }    }   

然后重新加载配置文件

./nginx -s reload

之后访问http://www.sina.com.cn/和http://www.sohu.com/就可以看到各自tomcat里边的东西了。

实现负载均衡

如果一个服务由多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

我再复制一个tomcat3-8082,修改其server.xml

<Server port="7082" shutdown="SHUTDOWN"> <Connector port="8082" protocol="HTTP/1.1" <Connector port="9082" protocol="AJP/1.3" redirectPort="8443" />

设置其index.jsp

<h1>${pageContext.servletContext.serverInfo}-souhu2</h1>

暴露8082端口号,设置开机启动,启动这个tomcat。

修改nginx.conf

    upstream sohu{        server 192.168.110.128:8081;        server 192.168.110.128:8082;    }

然后重新加载配置文件

然后访问http://www.sohu.com/会发现有的时候页面为souhu,有的时候为sohu2。

可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,默认为1

    upstream sohu{        server 192.168.110.128:8081;        server 192.168.110.128:8082 weight=2;    }

记得重新加载配置文件