服务器端使用sprignboot编写,会将国内ip和国外ip分别跳转到不同的链接(国内服务器)
配置域名以后,使用nginx代理转发到该springboot应用的端口
最开始写法如下:
server {
listen 80;
server_name 配置的域名;
location / {
proxy_pass http://ip:port;
}
}
后面发现无论无何都是识别成国内的 ip
后面百度发现,使用 nginx 转发会有一个代理服务器的 ip 过去
于是改成如下:
server {
listen 80;
server_name 配置的域名;
location / {
proxy_pass http://ip:port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
就可以实现国内外 i p跳转到不同链接,将真实 ip 放到 header 中,后端通过识别真实Ip进行跳转
具体可参照这篇文章 nginx proxy_set_header测试,查看分别在设置 X-Real-IP 和不设置 X-Real-IP 下获取到的 ip 区别