主頁(yè) > 知識(shí)庫(kù) > Tomcat獲取Nginx反向代理的客戶端域名

Tomcat獲取Nginx反向代理的客戶端域名

熱門(mén)標(biāo)簽:阿里云 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 美圖手機(jī) 檢查注冊(cè)表項(xiàng) 網(wǎng)站建設(shè) 硅谷的囚徒呼叫中心 使用U盤(pán)裝系統(tǒng) 智能手機(jī)

問(wèn)題

Nginx反向代理之后,Tomcat應(yīng)用通過(guò)request.getHeader("host")取到的是Nginx的host,并非客戶端瀏覽器地址欄上的真實(shí)域名。

例如在某一臺(tái)服務(wù)器上,Tomcat的端口號(hào)為8080,Nginx的端口號(hào)為80,Nginx反向代理8080端口。

server {
  listen 80;
  location / {
    proxy_pass http://127.0.0.1:8080;
  }
}

在另一臺(tái)機(jī)器上用瀏覽器打開(kāi)http://haha/test訪問(wèn)Tomcat下的應(yīng)用,獲取客戶端域名。

System.out.println(request.getHeader("host"));

結(jié)果是:

localhost:8080

問(wèn)題產(chǎn)生的原因

Nginx的反向代理實(shí)際上是客戶端和真是的應(yīng)用服務(wù)器之間的一個(gè)橋梁,客戶端(一般是瀏覽器)訪問(wèn)Nginx服務(wù)器,Nginx再去訪問(wèn)Web應(yīng)用服務(wù)器。對(duì)于Web應(yīng)用來(lái)說(shuō),這次HTTP請(qǐng)求的客戶端是Nginx而非真實(shí)的客戶端瀏覽器,如果不做特殊處理的話,Web應(yīng)用會(huì)把Nginx當(dāng)做請(qǐng)求的客戶端,獲取到的客戶端信息就是Nginx的一些信息。

問(wèn)題解決

Nginx配置HTTP Header。Host包含客戶端真實(shí)的域名和端口號(hào)

proxy_set_header Host $http_host;

Tomcat從Nginx傳遞過(guò)來(lái)的HTTP Header中獲取客戶端信息。

<Valve className="org.apache.catalina.valves.RemoteIpValve" />

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

標(biāo)簽:煙臺(tái) 湖北 懷化 黃山 通遼 湘潭 山南 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Tomcat獲取Nginx反向代理的客戶端域名》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266