反向代理代理服务器,正向代理代理客户端。
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。均衡负载能够平均分配客户请求到服务器阵列,籍此快速获取重要数据,解决大量并发访问服务问题。
1 根据上面配置文件,新建两个虚拟机,根据自己的物理机IP(192.168.43.110)配置虚拟机IP(192.168.43.111,192.168.43.112)
2 两个虚拟机安装tomcat以及jdk
3 修改两个虚拟机的tomcat的默认欢迎页面~/apache-tomcat-8.5.13/webapps/ROOT/index.jsp,并分别启动两虚拟机上的tomcat
1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 6 <title>Nginx Reverse Proxy And Load Balancing</title> 7 </head> 8 <body> 9 <div>服务器IP:192.168.43.111(112)</div> 10 <div>Nginx代理服务器IP:<%String ip = request.getRemoteAddr(); out.print(ip); %></div> 11 <div>客户端IP:<%String ipClient = request.getHeader("X-Real-IP"); out.print(ipClient); %></div> 12 </body> 13 </html>4 修改物理机C:\Windows\System32\drivers\etc\hosts文件,添加如下配置
192.168.43.112 www.hadoop.com
此处www.hadoop.com对应Nginx配置文件server(主机)节点下的server_name
5 切换到nginx安装目录下重启nginx
./nginx -s reload
6 访问www.hadoop.com页面,交替出现 服务器IP:192.168.43.111、服务器IP:192.168.43.112,简单负载均衡实现。
nginx,在做反向代理的时候,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端web服务器得到的数据包的头部的源IP地址是代理服务器的IP地址,如此一来,后端服务器的程序给予IP的统计功能就没有任何意义,所以需要两个步骤让服务器获取真实客户端IP
1 配置反向代理时设置proxy_set_header的名称 为X-Real-IP值为$remote_addr
proxy_set_header X-Real-IP $remote_addr;
2服务器端根据Nginx的配置获取Nginx记录的真实IP
ipClient = request.getHeader("X-Real-IP");
转载于:https://www.cnblogs.com/Matchman/p/9040197.html