後端Apache獲取前端Nginx反向代理的真實IP地址 (原創貼-轉載請註明出處)
阿新 • • 發佈:2019-02-18
====================說在前面的話====================
環境:前段Nginx是反向代理伺服器;後端是Apache是WEB專案伺服器
目的:讓後端Apapche獲取訪問者真實IP地址,而非是反向代理地址
=====================現在開幹======================
第一:Nginx配置
①:編輯nginx虛擬主機配置檔案。(因為我引用了虛擬主機單獨配置檔案,所以修改的不是nginx.conf)
vim /usr/local/nginx/conf/conf.d/vhos_blog.conf
②:在虛擬主機標籤內新增如下語句:
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;
第二:Apache配置
說明:Apache獲取真實IP地址有2個模組:mod_rpaf:Apache-2.2支援;Apache-2.4不支援;mod_remoteip:Apache-2.4自帶模組;Apache-2.2 支援,本次 實驗使用mod_remoteip
①:動態載入mod_remoteip模組
編輯httpd.conf檔案
vim /usr/local/apache/conf/httpd.conf
找到如下程式碼,去掉#號註釋使其生效
#LoadModule remoteip_module modules/mod_remoteip.so
②:在httpd.conf中加入如下程式碼,用Nginx的真實地址替換程式碼中的127.0.0.1
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1
③:在httpd.conf中找到
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
將日誌格式中的h%改成a%
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined