LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

采用端口轉(zhuǎn)向軟件映射到局域網(wǎng)內(nèi)的另外一臺(tái)WEB服務(wù)器時(shí),利用Nginx實(shí)現(xiàn)抓取訪客真實(shí)外網(wǎng)IP

admin
2025年6月27日 11:59 本文熱度 49

在Windows系統(tǒng)下實(shí)現(xiàn)端口轉(zhuǎn)發(fā)并確保后端Web服務(wù)器能獲取真實(shí)訪客IP(通過X-Forwarded-For頭部),核心是選擇工作在應(yīng)用層(HTTP協(xié)議)的代理工具。這類工具能解析并修改HTTP頭部,而不僅僅是TCP層的端口轉(zhuǎn)發(fā)。以下是綜合推薦和配置方案:

? 推薦工具:Nginx(反向代理模式)

?推薦理由

Nginx是專業(yè)的HTTP反向代理服務(wù)器,支持靈活配置HTTP頭部(如X-Forwarded-For),且擁有Windows官方版本。它不僅能傳遞真實(shí)IP,還具備負(fù)載均衡、限流、緩存等高級(jí)功能。

?? 配置步驟:

  1. 下載安裝

?從官網(wǎng)下載Windows版Nginx,解壓到任意目錄(如C:\nginx)。

Mainline version

CHANGESnginx-1.29.0  pgpnginx/Windows-1.29.0  pgp

Stable version

CHANGES-1.28nginx-1.28.0  pgpnginx/Windows-1.28.0  pgp

修改配置文件nginx.conf):

  1. http塊中添加以下配置,將外部請(qǐng)求轉(zhuǎn)發(fā)到內(nèi)部Web服務(wù)器(如192.168.1.100:80),并設(shè)置X-Forwarded-For

server {

    listen 80;  # 監(jiān)聽外部80端口

    server_name your-domain.com;  # 域名或公網(wǎng)IP


    location / {

        proxy_pass http://192.168.1.100:80;  # 內(nèi)部Web服務(wù)器地址

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;  # 傳遞客戶端真實(shí)IP

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 追加IP到XFF頭部

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}

    • X-Forwarded-For $proxy_add_x_forwarded_for:將客戶端真實(shí)IP添加到HTTP頭部16

    • X-Real-IP $remote_addr:?jiǎn)为?dú)記錄客戶端IP(需后端支持)。

    • 關(guān)鍵參數(shù)

  1. 啟動(dòng)Nginx
    命令行中運(yùn)行:

cd C:\nginx

start nginx

  1. 驗(yàn)證配置

    • 訪問Web頁面,檢查日志或代碼中$_SERVER['HTTP_X_FORWARDED_FOR'](PHP示例)是否包含真實(shí)IP。

    • 使用抓包工具(如Wireshark)查看HTTP請(qǐng)求頭部。

?? 注意事項(xiàng):

  1. 安全防護(hù)

    • 防止IP偽造:若Nginx前有其他代理(如CDN),需通過set_real_ip_fromreal_ip_header配置信任的代理IP,否則可能被篡改X-Forwarded-For6

set_real_ip_from 192.168.1.0/24;  # 信任的內(nèi)網(wǎng)代理IP段

set_real_ip_from 10.0.0.0/8;

real_ip_header X-Forwarded-For;    # 從XFF頭提取真實(shí)IP

  1. 啟用限流:防止CC攻擊(參考Nginx的limit_req_zone配置)

  2. 替代方案

    • Apache HTTP Server:可通過mod_proxymod_remoteip實(shí)現(xiàn)類似功能,但配置復(fù)雜且Windows性能較差。

    • 云服務(wù)集成:若部署在公有云(如Azure/AWS),可直接使用云負(fù)載均衡器(如ALB、Azure Front Door),自動(dòng)處理X-Forwarded-For

  3. 不推薦工具

    • netsh portproxy(Windows自帶):僅支持TCP層轉(zhuǎn)發(fā),無法修改HTTP頭部。

    • PortTunnel等簡(jiǎn)易工具:通常工作在傳輸層,無HTTP頭部處理能力。

?? 總結(jié)建議

  • 首選Nginx:功能全面、性能優(yōu)異,配置簡(jiǎn)單且免費(fèi),完美滿足需求36

  • 多層代理場(chǎng)景:若網(wǎng)絡(luò)中存在CDN或前置防火墻,需確保每一層代理都正確傳遞X-Forwarded-For,并在最終后端服務(wù)器中信任該頭部6

  • 測(cè)試工具:用curl -H "X-Forwarded-For: 1.2.3.4" http://your-domain.com模擬請(qǐng)求,驗(yàn)證IP是否透?jìng)鳌?/p>

附:Nginx for Windows下載鏈接 | Nginx配置文檔

在Windows下使用Nginx配置多端口映射

您需要配置多個(gè)端口映射時(shí),Nginx可以輕松處理這種情況。以下是完整的解決方案:

多端口映射配置方案

1. 多個(gè)HTTP端口映射(示例配置)

http {

    # 第一個(gè)服務(wù):外部80端口 → 內(nèi)部192.168.1.100:80

    server {

        listen 80;

        server_name example.com;  # 您的域名或留空

        

        location / {

            proxy_pass http://192.168.1.100:80;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }


    # 第二個(gè)服務(wù):外部8080端口 → 內(nèi)部192.168.1.101:8080

    server {

        listen 8080;

        server_name api.example.com;  # 二級(jí)域名

        

        location / {

            proxy_pass http://192.168.1.101:8080;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }


    # 第三個(gè)服務(wù):外部8888端口 → 內(nèi)部192.168.1.102:80

    server {

        listen 8888;

        server_name "";  # 無域名訪問

        

        location / {

            proxy_pass http://192.168.1.102:80;

            proxy_set_header Host $host;

            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }

}

2. HTTPS端口映射(需要SSL證書)

# HTTPS服務(wù):外部443端口 → 內(nèi)部192.168.1.200:443

server {

    listen 443 ssl;

    server_name secure.example.com;

    

    # SSL證書配置

    ssl_certificate C:/nginx/conf/ssl/example.com.crt;

    ssl_certificate_key C:/nginx/conf/ssl/example.com.key;

    

    # SSL優(yōu)化參數(shù)

    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 10m;

    ssl_protocols TLSv1.2 TLSv1.3;

    

    location / {

        proxy_pass https://192.168.1.200;  # 注意是https協(xié)議

        proxy_ssl_verify off;  # 如果使用自簽名證書需要關(guān)閉驗(yàn)證

        

        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;  # 傳遞協(xié)議信息

    }

}

3. 混合協(xié)議配置(HTTP+HTTPS)

# HTTP重定向到HTTPS

server {

    listen 80;

    server_name example.com;

    return 301 https://$host$request_uri;  # 自動(dòng)跳轉(zhuǎn)到HTTPS

}


# HTTPS主服務(wù)

server {

    listen 443 ssl;

    server_name example.com;

    

    ssl_certificate C:/nginx/conf/ssl/example.com.crt;

    ssl_certificate_key C:/nginx/conf/ssl/example.com.key;

    

    # 主應(yīng)用

    location / {

        proxy_pass http://192.168.1.100:80;

        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;

    }

    

    # 子路徑應(yīng)用

    location /blog {

        proxy_pass http://192.168.1.101:8080;  # 映射到內(nèi)部8080端口

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    

    # API服務(wù)

    location /api {

        proxy_pass http://192.168.1.102:3000;  # 映射到內(nèi)部3000端口

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

配置步驟

  1. 編輯配置文件

    • 打開 C:\nginx\conf\nginx.conf

    • 添加上述配置(根據(jù)您的需求調(diào)整)

  2. 測(cè)試配置

cd C:\nginx

nginx -t

  1. 重新加載配置

nginx -s reload

多端口管理技巧

  1. 端口規(guī)劃表

    外部端口內(nèi)部服務(wù)器內(nèi)部端口用途協(xié)議
    80192.168.1.10080主網(wǎng)站HTTP
    443192.168.1.10080主網(wǎng)站(HTTPS)HTTPS
    8080192.168.1.1018080測(cè)試環(huán)境HTTP
    8888192.168.1.1023000API服務(wù)HTTP
  2. 高級(jí)配置選項(xiàng)

location / {

    proxy_pass http://backend;

    

    # 連接優(yōu)化參數(shù)

    proxy_connect_timeout 60s;

    proxy_send_timeout 60s;

    proxy_read_timeout 60s;

    proxy_buffers 8 16k;

    proxy_buffer_size 32k;

    

    # 保持真實(shí)IP

    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;

}

  1. 日志分離

http {

    # 為不同服務(wù)設(shè)置不同日志

    log_format main_service '$remote_addr - $remote_user [$time_local] '

                           '"$request" $status $body_bytes_sent '

                           '"$http_referer" "$http_user_agent"';

    

    log_format api_service '$remote_addr - $remote_user [$time_local] '

                          '"$request" $status $body_bytes_sent '

                          '"$http_referer" "$http_user_agent" $request_time';

    

    server {

        listen 80;

        server_name example.com;

        access_log logs/main_access.log main_service;

        # ...

    }

    

    server {

        listen 8080;

        server_name api.example.com;

        access_log logs/api_access.log api_service;

        # ...

    }

}

常見問題解決

  1. 端口沖突

    • 確保Windows沒有其他程序占用這些端口

    • 使用 netstat -ano | findstr :80 檢查端口占用

  2. 防火墻設(shè)置

# 允許HTTP端口

New-NetFirewallRule -DisplayName "Nginx HTTP" -Direction Inbound -Protocol TCP -LocalPort 80,8080,8888 -Action Allow


# 允許HTTPS端口

New-NetFirewallRule -DisplayName "Nginx HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

  1. 驗(yàn)證真實(shí)IP

    • 在后端服務(wù)器創(chuàng)建測(cè)試頁面:

<?php

echo "Client IP: " . $_SERVER['HTTP_X_REAL_IP'] . "<br>";

echo "X-Forwarded-For: " . $_SERVER['HTTP_X_FORWARDED_FOR'];

?>

這樣配置后,您可以通過不同的端口訪問不同的內(nèi)部服務(wù),同時(shí)所有服務(wù)都能正確獲取客戶端的真實(shí)IP地址。


相關(guān)教程:

為什么通過路由器端口轉(zhuǎn)向到內(nèi)部WEB服務(wù)器時(shí),WEB頁面能夠抓到外網(wǎng)訪客的真實(shí)IP。而用PortTunnel之類的軟件實(shí)現(xiàn)的端口映射到內(nèi)部WEB服務(wù)器時(shí),WEB頁面抓到的卻是PortTunnel所在電腦的內(nèi)網(wǎng)IP?[29]
  http://31873.oa22.cn


該文章在 2025/6/27 13:06:36 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
特黄国产禁在线观看 | 中文字幕的a级一片 | 精品国产高清自在自线 | 亚洲中文字幕制服自拍 | 永久免费在线观看全网站 | 午夜三A级免费在线视频 |