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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx SSL+tomcat集群配置SSL,ngnix配置SSL后js/css访问出现404

發布時間:2024/1/17 Nginx 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx SSL+tomcat集群配置SSL,ngnix配置SSL后js/css访问出现404 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一個項目,?架構上使用了 Nginx +tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,項目使用https協議

但是,明明是https url請求,發現 log里面,

1 2 3 4 5 6 7 8 0428?15:55:55?INFO??(PaymentInterceptor.java:44)?preHandle()?-?requestStringForLog:????{?? ????????"request.getRequestURL():":?"http://trade.feilong.com/payment/paymentChannel?id=212&s=a84485e0985afe97fffd7fd7741c93851d83a4f6",?? ????????"request.getMethod:":?"GET",?? ????????"_parameterMap":?????????{?? ????????????"id":?["212"],?? ????????????"s":?["a84485e0985afe97fffd7fd7741c93851d83a4f6"]?? ????????}?? ????}

request.getRequestURL() 輸出出來的 一直是 ?http://trade.feilong.com/payment/paymentChannel?id=212&s=a84485e0985afe97fffd7fd7741c93851d83a4f6

但是瀏覽器中的URL卻是?https://trade.feilong.com/payment/paymentChannel?id=212&s=a84485e0985afe97fffd7fd7741c93851d83a4f6

?

?

瞬間要顛覆我的Java觀,API上寫得很清楚:

?

getRequestURL():

1 Reconstructs?the?URL?the?client?used?to?make?the?request.?The?returned?URL?contains?a?protocol,?server?name,?port?number,?and?server?path,?but?it?does?not?include?query?string?parameters.

也就是說,?getRequestURL() 輸出的是不帶query string的路經(含協議 端口 server path等信息).

?

并且,還發現

?

1 2 3 4 5 request.getScheme()??//總是?http,而不是實際的http或https?? request.isSecure()??//總是false(因為總是http)?? request.getRemoteAddr()??//總是?nginx?請求的?IP,而不是用戶的IP?? request.getRequestURL()??//總是?nginx?請求的URL?而不是用戶實際請求的?URL?? response.sendRedirect(?相對url?)??//總是重定向到?http?上?(因為認為當前是?http?請求)

查閱了一些資料,找到了解決方案:

?

解決方法很簡單,只需要分別配置一下 Nginx 和 Tomcat 就好了,而不用改程序。

?

配置 Nginx 的轉發選項:

1 2 3 4 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;

proxy_set_header X-Forwarded-Proto $scheme;

?

配置Tomcat server.xml 的 Engine 模塊下配置一個 Valve:

1 2 3 4 <Valve?className="org.apache.catalina.valves.RemoteIpValve"?? remoteIpHeader="X-Forwarded-For"?? protocolHeader="X-Forwarded-Proto"?? protocolHeaderHttpsValue="https"/>

配置雙方的 X-Forwarded-Proto 就是為了正確地識別實際用戶發出的協議是 http 還是 https。

這樣以上5項測試就都變為正確的結果了,就像用戶在直接訪問 Tomcat 一樣。

?

關于?RemoteIpValve,有興趣的同學可以閱讀下 doc?

http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html

?

1 2 3 Tomcat?port?of?mod_remoteip,?this?valve?replaces?the?apparent?client?remote?IP?address?and?hostname?for?the?request?with?the?IP?address?list?presented?by?a?proxy?or?a?load?balancer?via?a?request?headers?(e.g.?"X-Forwarded-For").??? ???? Another?feature?of?this?valve?is?to?replace?the?apparent?scheme?(http/https)?and?server?port?with?the?scheme?presented?by?a?proxy?or?a?load?balancer?via?a?request?header?(e.g.?"X-Forwarded-Proto").

看了下他們的源碼,比較簡單,在各種框架,各種算法面前,這個類對性能影響很小

?

  • 如果沒有配置protocolHeader 屬性, 什么都不做.

  • 如果配置了protocolHeader,但是request.getHeader(protocolHeader)取出來的值是null,什么都不做

  • 如果配置了protocolHeader,但是request.getHeader(protocolHeader)取出來的值(忽略大小寫)是 配置的protocolHeaderHttpsValue(默認https),scheme設置為https,端口設置 為?httpsServerPort

  • 其他設置為 http

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 if?(protocolHeader?!=?null)?{?? ????String?protocolHeaderValue?=?request.getHeader(protocolHeader);?? ????if?(protocolHeaderValue?==?null)?{?? ????????//?don't?modify?the?secure,scheme?and?serverPort?attributes?? ????????//?of?the?request?? ????}?else?if?(protocolHeaderHttpsValue.equalsIgnoreCase(protocolHeaderValue))?{?? ????????request.setSecure(true);?? ????????//?use?request.coyoteRequest.scheme?instead?of?request.setScheme()?because?request.setScheme()?is?no-op?in?Tomcat?6.0?? ????????request.getCoyoteRequest().scheme().setString("https");?? ??????????? ????????request.setServerPort(httpsServerPort);?? ????}?else?{?? ????????request.setSecure(false);?? ????????//?use?request.coyoteRequest.scheme?instead?of?request.setScheme()?because?request.setScheme()?is?no-op?in?Tomcat?6.0?? ????????request.getCoyoteRequest().scheme().setString("http");?? ???????????










本文轉自yunlielai51CTO博客,原文鏈接:http://blog.51cto.com/4925054/1949323,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的Nginx SSL+tomcat集群配置SSL,ngnix配置SSL后js/css访问出现404的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 老司机深夜网站 | 精品黄色在线观看 | 狠狠狠狠狠狠狠干 | xxsm.com| 国产视频在线一区 | 福利在线视频导航 | 亚洲视频手机在线 | 亚洲久久久久久 | 亚洲精品中字 | 免费色视频| 色香蕉影院 | jul023被夫上司连续侵犯 | 天天干夜夜操视频 | 久久久久亚洲av无码专区桃色 | 视频日韩| 91三级视频 | 午夜国产小视频 | 怡红院成人av| 日日热 | 久久久久国产精品午夜一区 | 西野翔夫の目の前で犯在线 | 国产精品久久久久久久妇 | 吞精囗交69激情欧美 | 中文在线√天堂 | www亚洲精品 | 午夜啪啪福利视频 | 九九99久久 | 欧美一区二区视频在线观看 | 最新国产精品视频 | 丁香六月婷婷综合 | 啪啪网站免费 | 国产成人h| 精品国产伦一区二区三区免费 | 草久久免费视频 | 日本精品一二三区 | 日韩福利一区 | 中文字幕在线观看av | 最近免费中文字幕中文高清百度 | 精品一区中文字幕 | 韩国日本美国免费毛片 | 特级淫片aaaaaaa级 | 香蕉久久视频 | 中国国产黄色片 | 中文字幕一区二区三区日韩精品 | 午夜国产福利在线观看 | 久久精品中文 | 中出在线| wwwxxx日本免费 | 国产精品日韩在线观看 | 99视频一区二区 | 久久99精品久久久久久水蜜桃 | 亚洲欧美日韩精品在线观看 | 国内特级毛片 | 巨胸爆乳美女露双奶头挤奶 | av在线影片 | 波多野结衣50连登视频 | 男女啪啪免费看 | 国产一区中文字幕 | 91你懂的 | av在线播放中文字幕 | 精品久久久久久久久久久久久久久久久久 | 91视频国产免费 | 老熟妇仑乱视频一区二区 | 中文字幕不卡在线播放 | 少妇被粗大猛进进出出s小说 | 成人a网站 | 强行糟蹋人妻hd中文字幕 | 久久性片 | 国产婷婷色一区二区 | 无码精品人妻一区二区 | 色屋永久| 久久亚洲网 | 日本少妇一级片 | 韩国一级淫片 | 精品少妇人妻av一区二区 | 九月丁香婷婷 | 成人123区 | 日韩欧美一级 | 亚洲精品国产精品国自产网站 | 日韩av大片在线观看 | 美腿丝袜亚洲综合 | 校园春色 亚洲色图 | 人妻熟妇又伦精品视频a | 免费亚洲视频 | 在线成年人视频 | 亚洲欧美网址 | 污视频网站在线播放 | 麻豆影视大全 | 成人在线电影网站 | 日韩人妻无码一区二区三区99 | 91嫩草视频在线观看 | xxxxx色| 男女av网站| 日韩激情视频 | 精品自拍一区 | 日日噜噜噜噜人人爽亚洲精品 | 日韩欧美无 | 欧美一级淫片免费视频魅影视频 | 日本少妇xxxxx |