1.什么是反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的(也就是正向代理)。
而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
2、需求
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。
nginx负载均衡服务器:192.168.3.43
tomcat1服务器:192.168.3.43:8080
tomcat2服务器:192.168.3.43:8081
3、nginx的配置
upstream tomcatserver1 {
server 192.168.3.43:8080;
server 192.168.3.43:8082; #多加了此台服务器
}
upstream tomcatserver2 {
server 192.168.3.43:8082;
}
server {
listen 80;
server_name 8080.zcinfo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 8082.zcinfo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver2;
index index.html index.htm;
}
}
重启nginx
在nginx安装目录的sbin路径下
./nginx -s reload
如果两台服务器性能差不多这样设置重启nginx就行了,但是现在假如两台服务器性能不一样,还需要设置性能权重,让性能高服务器做更多事情。只需要加入weight=?就行了,如下:
upstream tomcatserver1 {
server 192.168.3.43:8080 weight=2;
server 192.168.3.43:8082 weight=1;
}
upstream tomcatserver2 {
server 192.168.3.43:8082;
}
server {
listen 80;
server_name 8080.zcinfo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 8082.zcinfo.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver2;
index index.html index.htm;
}
}
重新启动nginx,会发现8080出现了两次,8082出现一次这样轮循。