日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

ServletUriComponentsBuilder遇到Nginx反向代理时,无法识别HTTPS

發(fā)布時(shí)間:2024/9/19 Nginx 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 就不再處理。
其在官方注釋如下:

/*** UriComponentsBuilder with additional static factory methods to create links* based on the current HttpServletRequest.** <p><strong>Note:</strong> As of 5.1, methods in this class do not extract* {@code "Forwarded"} and {@code "X-Forwarded-*"} headers that specify the* client-originated address. Please, use* {@link org.springframework.web.filter.ForwardedHeaderFilter* ForwardedHeaderFilter}, or similar from the underlying server, to extract* and use such headers, or to discard them.** @author Rossen Stoyanchev* @since 3.1*/ public class ServletUriComponentsBuilder extends UriComponentsBuilder {

解決辦法

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。