项目部署使用nginx配置转发后,会导致获取服务器本身ip和,客户端ip都会有异常
需要配置下面三个proxy_set_header:
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://127.0.0.1:8077;
# root html;
# index index.html index.htm;
}
根据没设置proxy_set_header
的情况来说说:
- 不设置 proxy_set_header Host $host; 会导致项目获取服务器本身ip为 127.0.0.1:8080(加项目端口)
- 不设置
proxy_set_header X-Real-IP $remote_addr;
,proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
会导致获取客户端的ip时为127.0.0.1
为什么要获取服务器端ip: 要获取项目外部资源文件
为什么要获取客户端ip:看看是谁登录了~
nginx配置详解:
location /mineproxypass/ {
proxy_pass http://localhost:10086/nookblog/;
#保留代理之前的host 默认值为 $proxy_host
#proxy_set_header Host $host;
#保留代理之前的真实客户端ip
proxy_set_header X-Real-IP $remote_addr;
#在多级代理的情况下,记录每次代理之前的客户端真实ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值
#proxy_redirect default ;
#default等效于下述配置,但是当设置proxy_set_header Host $host后,该配置失效
proxy_redirect http://localhost:10086/nookblog/ /mineproxypass/;
#cookie转发相关
proxy_cookie_path /nookblog /mineproxypass;
}
参考:地址