getRemoteAddr()获取客户端输入的ip地址
getRemoteAddr()获取客户端输入的ip地址#
遇到的问题:
客户端输入的http://192.168.6.131:8888
服务器得到的是:http: //wxzj-web:80
原因:nginx配置问题
源码如下:
/**
* Returns the host name of the server to which the request was sent. It is
* the value of the part before ":" in the <code>Host</code> header value,
* if any, or the resolved server name, or the server IP address.
*
* @return a <code>String</code> containing the name of the server
*/
public String getServerName();
之前nginx配置:
......
upstream wxzj-web {
#server 192.168.0.41:8280 weight=1;
server 127.0.0.1:8080 weight=1;
#server 124.128.246.24:8180 weight=1;
}
......
location /wxzj {
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-real-ip $remote_addr;
proxy_pass http://wxzj-web;
}
......
解决方法:
nginx配置添加下面参数
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
各参数的含义如下所示。
Host
包含客户端真实的域名和端口号;X-Forwarded-Proto
表示客户端真实的协议(http还是https);X-Real-IP
表示客户端真实的IP;X-Forwarded-For
这个Header和X-Real-IP
类似,但它在多层代理时会包含真实客户端及中间每个代理服务器的IP。
......
upstream wxzj-web {
#server 192.168.0.41:8280 weight=1;
server 127.0.0.1:8080 weight=1;
#server 124.128.246.24:8180 weight=1;
}
......
location /wxzj {
# 添加Host
proxy_set_header Host $http_host;
# 添加IP
proxy_set_header X-Real-IP $remote_addr;
# 添加X-Forwarded-For(以,分割的ip列表,第一个为真实的客户端ip)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
#这是webSocket的配置
proxy_set_header Upgrade $http_upgrade;
#这是webSocket的配置
proxy_set_header Connection "upgrade";
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://wxzj-web;
}
......
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!