ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS
生活随笔
收集整理的這篇文章主要介紹了
ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- spring mvc 5.2.9.RELEASE
- springboot 2.3.4.RELEASE
ServletUriComponentsBuilder遇到Nginx反向代理時,無法識別HTTPS的原因
spring 5.0.X ServletUriComponentsBuilder 會讀取 X-Forwarded-Prefix 頭,但spring 5.1.X 就不再處理。
其在官方注釋如下:
解決辦法
springboot中添加ForwardedHeaderFilter
@Configuration public class ConfigForwardedHeaderFilter {@Beanpublic Filter forwardedHeaderFilter() {return new ForwardedHeaderFilter();} }nginx中添加 X-Forwarded-*
location ^~ /front{proxy_pass http://127.0.0.1:8014;# $server_port端口,讓request.getServerPort()能夠獲取正確的端口proxy_set_header Host $host:$server_port;proxy_set_header Remote_Addr $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# https請求轉成http請求時,weblogic設置proxy_set_header WL-Proxy-SSL true; # https請求轉成http請求時,tomcat設置proxy_set_header X-Forwarded-Proto $scheme;# index頁面設置index index;}- X-Forwarded-For : HTTP 請求端真實 IP
- X-Forwarded-Host : 用戶在瀏覽器中看到的Host。域名或者ip。
- X-Forwarded-Port : 用戶在瀏覽器中看到的Port。80和443為默認端口,瀏覽器不顯示這兩個端口。
- X-Forwarded-Proto : 用戶在瀏覽器中看到的協議。Http或Https
- X-Forwarded-Prefix : 當nginx轉發請求后,省略的url部分。比如將prefix/a/b/c, 轉發到 /a/b/c,prefix 就是 X-Forwarded-Prefix。
參考
https://github.com/spring-projects/spring-hateoas/issues/862
https://github.com/spring-projects/spring-boot/issues/16492
總結
以上是生活随笔為你收集整理的ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpaceX:Starship 星舰 1
- 下一篇: 迅雷网盘如何下载文件到本地