NGINX反向代理,后端服務器獲取真實IP


一般使用中間件做一個反向代理后,后端的web服務器是無法獲取到真實的IP地址。

但是生產上,這又是不允許的,那么怎么解決?

1.在NGINX反向代理服務器上進行修改
2.修改后端web服務器配置文件

NGINX:

需要添加一個模塊來處理包頭
1.可通過添加http_realip_module模塊來獲取真實客戶端IP地址
2.修改NGINX配置文件啟動模塊作用

vim  /usr/local/nginx/conf/nginx.conf
  location / {
... 
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    HTTP_X_FORWARDED_FOR      $remote_addr;
        }

3.重啟NGINX服務器

后端web服務器修改

后端服務器
粟子:Apche,NGINX,Tomcat

NGINX:
修改配置文件

vim  /usr/local/nginx/conf/nginx.conf

http {
    include mime.types;
    default_type  application/octet-stream;
        set_real_ip_from 192.168.4.1;     //添加nginx代理服務器真實IP
}

重啟服務

Apache:
說明:Apache獲取真實IP地址有2個模塊:
mod_rpaf:Apache-2.2支持;Apache-2.4不支持;
mod_remoteip:Apache-2.4自帶模塊;Apache-2.2 支持

示范為2.4
1修改配
vim /usr/local/apache/conf/httpd.conf
如下代碼去掉注釋,

#LoadModule remoteip_module modules/mod_remoteip.so

3添加如下代碼

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.168.4.1     //IP為nginx代理服務器的地址

4修改日志顯示格式
添加%a,日志中第二例顯示真實IP

LogFormat "%h %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %a %l %u %t \"%r\" %>s %b" common

5重啟服務

Tomcat:

修改配置文件

vim /usr/local/tomcat/conf/server.xml

修改pattern格式

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
 prefix="localhost_access_log." suffix=".txt"  
 pattern="%h %{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false" />

重啟服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM