1.准备两台虚拟机,并且安装好nginx(安装可参考)
server1作为反向代理服务器,server2作为上游服务器。
2.上游服务器搭建web服务(可参考)
3.反向代理服务器设置
#在http指令块下添加一个upstream指令块,server的参数填写上游服务器的IP地址
upstream LocalServer2{
server 192.168.233.150;
}
server {
listen 80;
server_name localhost;
#在location / 中添加以下指令
location / {
proxy_set_header Host $host;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://LocalServer2; #http:// + upstream中定义的名称
}
}
查看反向代理的效果,在浏览器中输入反向代理服务器的IP地址,显示的实际上是上游服务器的内容。
4.上游服务器查看真正访问客户的地址
- 访问过程
第一步:客户端—(访问)—>代理服务器
第二步:代理服务器—(访问)—>上游服务器
- 上游服务器默认的访问日志中,记录的只有代理服务器的IP地址,而没有真实的客户地址。
- 修改上游服务器访问日志的格式
[root@server2 conf]# vim nginx.conf
#$http_x_forwarded_for为真实的访问地址,配置文件中默认已经写出来了,只需要取消注释就可以
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
- 查看真实的访问地址