在使用spring boot服务的时候,一般都会加反向代理,这时候并不能正确获取真实的IP,网上解决方案说的比较明确,都可以解决问题。很少有人会问如何获取http/https,因为很少人用程序获取真实的访问路径,可能都把地址加到配置文件里了。
nginx的配置
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_set_header X-Forwarded-Proto $scheme;
第四个配置是帮助spring boot获取正确协议头的配置。 同时也需要在application.yml里加增加一个配置,当然如果你直接从头上获取,也可以不增加配置。
server:
forward-headers-strategy: native
参数是native和framework两者选择,当然还有none不做考虑。framework的话可以自己增加一个过滤器进行header的处理。
以上处理适合spring boot 2.2后的版本。