之前一直没注意,突然发现博客数据库中所有远程ip都是127.0.0.1
emmm..总感觉这个问题和referer传递有点像
问题原因
正如前文所说的那样,由于反向代理,客户端并不会直接访问应用服务器,而是由nginx将用户的请求转发给应用服务器,对于应用服务器来说,此时请求的地址就是nginx的地址(即本机:127.0.0.1)
解决方案
和之前一样,通过将远程ip设置到转发的请求中即可
配置nginx
location / {
#配置反向代理,应用服务器服务路径
proxy_pass http://127.0.0.1:9000;
#前文设置的referer
proxy_set_header Referer $http_referer;
#设置请求头host
proxy_set_header Host $http_host;
#设置真实的客户端ip
proxy_set_header X-Real-IP $remote_addr;
#请求链,每次的转发ip都被记录在此处
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#客户端的访问协议(https、http)
proxy_set_header X-Forwarded-Proto $scheme;
#客户端请求大小限制
client_max_body_size 100m;
}
这样就能获取远程客户端ip了
Q.E.D.