天天看點

Tomcat捕獲Nginx反向代理協定IP及端口配置

最近的技術調整,需要擷取Nginx端請求方式是http還是https。我們目前的架構屬于典型的網際網路架構,Nginx+Tomcat+Mysql,啟用了反向代理。目前并沒有啟用全站https,是以用戶端發出的請求基于子產品的方式使用http或者https協定。關于捕獲這個請求的協定,我們需要使用到Nginx ngx_http_proxy_module這個子產品中的proxy_set_header指令來進行配置。本文描述通過這個指令來實作捕獲請求協定。

這個指令的使用上下文是http,server,location,它允許重新定義或附加字段到傳遞給代理伺服器的請求頭部 。簡單的說,當用戶端發出web請求後,這個指令可以把真實的用戶端請求的如IP位址,端口号,協定等等追加或修改到代理伺服器的請求頭部。通過這個設定,我們可以擷取最終客戶的原始請求資訊,而不是代理伺服器作為用戶端的資訊。這個指令的值value可以包含文本,變量,以及它們的組合。當且僅當proxy_set_header 在目前級别上沒有定義的指令時,這些指令才從前一級繼承 。預設情況下,隻有兩個字段被重新定義,他們是,proxy_set_header Host $proxy_host; proxy_set_header Connection close。

nginx伺服器環境

tomcat伺服器環境

nginx配置檔案

<a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header">http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header</a>

<a href="http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletRequest.html">http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletRequest.html</a>

Tomcat捕獲Nginx反向代理協定IP及端口配置