nginx & tomcat 獲取正確端口號(hào)

我們經(jīng)常會(huì)使用 nginx 作為反向代理,為 tomcat 提供負(fù)載均衡功能。但是往往,nginx 對(duì)外提供的協(xié)議或端口號(hào),與內(nèi)部 tomcat 的協(xié)議和端口號(hào)并不一致。例如:nginx 對(duì)外提供 HTTPS 服務(wù),tomcat 則提供 HTTP 服務(wù),或者 nginx 監(jiān)聽在80 端口,而 tomcat 則監(jiān)聽在8080端口。默認(rèn)情況下,tomcat及應(yīng)用代碼無法感知用戶訪問 nginx 時(shí)使用的端口及協(xié)議,導(dǎo)致應(yīng)用代碼生成的跳轉(zhuǎn)鏈接異常。

為了解決上述問題,我們需要將用戶訪問 nginx 時(shí)的協(xié)議頭及端口號(hào)通過某種方式傳遞給 tomcat。

nginx中, 將協(xié)議頭($scheme)、端口號(hào)通過 http 頭傳遞給 tomcat。

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

tomcat 中, 在 Engine 中添加如下 valve 配置。

internalProxies 默認(rèn)配置為 10/8,192.168/16, 169.254/16,127/8。如果你的 proxy 地址在這些地址范圍之內(nèi),你可以不配置 internalProxies,如果 proxy 地址不在這些地址范圍內(nèi)則必須配置。

<Valve className="org.apache.catalina.valves.RemoteIpValve"
    internalProxies="192\.30\.30\.17|192\.30\.30\.16"
    portHeader="x-forwarded-port"
    protocolHeader="x-forwarded-proto"
    proxiesHeader="x-forwarded-by"
    remoteIpHeader="x-forwarded-for"
/>

Links

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 前言 Tomcat隸屬于Apache基金會(huì),是開源的輕量級(jí)Web應(yīng)用服務(wù)器,使用非常廣泛。server.xml是T...
    余平的余_余平的平閱讀 2,053評(píng)論 0 23
  • 名詞延伸 通俗的說,域名就相當(dāng)于一個(gè)家庭的門牌號(hào)碼,別人通過這個(gè)號(hào)碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,815評(píng)論 2 56
  • 文/落燈starlight 我曾聽他們說, 那是空無一島的海洋。 但現(xiàn)在我站在那, 那有一座荒無人煙的島嶼。 那里...
    落燈starlight閱讀 292評(píng)論 4 3
  • 【1】 有人說,這個(gè)世界上是沒有公平的;有人說,這個(gè)世界上是有公平的。 但是,我要說,這個(gè)世界上,上帝還是公平的!...
    我把一切都告訴你閱讀 553評(píng)論 0 1

友情鏈接更多精彩內(nèi)容