nginx ---IP地址透傳


默認后端服務器只能看到是前端nginx調度器訪問的本機

針對前端只有單個代理服務器的解決辦法

一、修改調度機nginx的虛擬主機的配置文件

  設定轉發往后端主機的請求報文的請求首部的值;

vim /etc/nginx/conf.d/test.conf 
server {
        listen 80;
        server_name www.test.net;
        root /data/site1/;
        location ~.*\.(jpg|png|jpeg)$ {
                proxy_pass http://192.168.1.4;

        }
        location /api {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://192.168.1.6;
        }
        access_log /var/log/nginx/test_net.log ;
}

  nginx 對別人發給它的文件沒辦法修改,但對他發送給別人的文件可以修改,這里在頭部添加一個X-Real-IP

  默認日志里記錄的是訪問本機的客戶端IP地址,X-Real-IP這個字段可以自定義

二、重啟nginx服務器

1 systemctl restart nginx
2 或者
3 nginx -s stop
4 nginx

三、修改后端主機的主配置文件

vim /etc/httpd/conf/httpd.conf 

默認記錄的開頭是客戶端IP地址:(英文輸入法下,輸入/LogFormat  直接定位到這行)

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

將原來的注釋掉,修改為:

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

四、測試訪問

curl www.test.net/api -L

五、查看后端日志

"192.168.1.4" 192.168.1.5 - - [08/Jun/2021:11:47:23 +0800] "GET /api HTTP/1.0" 301 231 "-" "curl/7.29.0"
"192.168.1.4" 192.168.1.5 - - [08/Jun/2021:11:47:23 +0800] "GET /api/ HTTP/1.0" 200 31 "-" "curl/7.29.0"

192.168.1.4 是測試服務器地址,192.168.1.5是nginx調度器地址。

 


免責聲明!

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



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