ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS
生活随笔
收集整理的這篇文章主要介紹了
ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前言
- spring mvc 5.2.9.RELEASE
- springboot 2.3.4.RELEASE
ServletUriComponentsBuilder遇到Nginx反向代理時(shí),無法識(shí)別HTTPS的原因
spring 5.0.X ServletUriComponentsBuilder 會(huì)讀取 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請求轉(zhuǎn)成http請求時(shí),weblogic設(shè)置proxy_set_header WL-Proxy-SSL true; # https請求轉(zhuǎn)成http請求時(shí),tomcat設(shè)置proxy_set_header X-Forwarded-Proto $scheme;# index頁面設(shè)置index index;}- X-Forwarded-For : HTTP 請求端真實(shí) IP
- X-Forwarded-Host : 用戶在瀏覽器中看到的Host。域名或者ip。
- X-Forwarded-Port : 用戶在瀏覽器中看到的Port。80和443為默認(rèn)端口,瀏覽器不顯示這兩個(gè)端口。
- X-Forwarded-Proto : 用戶在瀏覽器中看到的協(xié)議。Http或Https
- X-Forwarded-Prefix : 當(dāng)nginx轉(zhuǎn)發(fā)請求后,省略的url部分。比如將prefix/a/b/c, 轉(zhuǎn)發(fā)到 /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
總結(jié)
以上是生活随笔為你收集整理的ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpaceX:Starship 星舰 1
- 下一篇: Nginx的405 not allowe