狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

采用端口轉向軟件映射到局域網內的另外一臺WEB服務器時,利用Nginx實現抓取訪客真實外網IP

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

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

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

?推薦理由

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

?? 配置步驟:

  1. 下載安裝

?從官網下載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塊中添加以下配置,將外部請求轉發到內部Web服務器(如192.168.1.100:80),并設置X-Forwarded-For

server {

    listen 80;  # 監聽外部80端口

    server_name your-domain.com;  # 域名或公網IP


    location / {

        proxy_pass http://192.168.1.100:80;  # 內部Web服務器地址

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;  # 傳遞客戶端真實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:將客戶端真實IP添加到HTTP頭部16

    • X-Real-IP $remote_addr:單獨記錄客戶端IP(需后端支持)。

    • 關鍵參數

  1. 啟動Nginx
    命令行中運行:

cd C:\nginx

start nginx

  1. 驗證配置

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

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

?? 注意事項:

  1. 安全防護

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

set_real_ip_from 192.168.1.0/24;  # 信任的內網代理IP段

set_real_ip_from 10.0.0.0/8;

real_ip_header X-Forwarded-For;    # 從XFF頭提取真實IP

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

  2. 替代方案

    • Apache HTTP Server:可通過mod_proxymod_remoteip實現類似功能,但配置復雜且Windows性能較差。

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

  3. 不推薦工具

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

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

?? 總結建議

  • 首選Nginx:功能全面、性能優異,配置簡單且免費,完美滿足需求36

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

  • 測試工具:用curl -H "X-Forwarded-For: 1.2.3.4" http://your-domain.com模擬請求,驗證IP是否透傳。

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

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

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

多端口映射配置方案

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

http {

    # 第一個服務:外部80端口 → 內部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;

        }

    }


    # 第二個服務:外部8080端口 → 內部192.168.1.101:8080

    server {

        listen 8080;

        server_name api.example.com;  # 二級域名

        

        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;

        }

    }


    # 第三個服務:外部8888端口 → 內部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服務:外部443端口 → 內部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優化參數

    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協議

        proxy_ssl_verify off;  # 如果使用自簽名證書需要關閉驗證

        

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

    }

}

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

# HTTP重定向到HTTPS

server {

    listen 80;

    server_name example.com;

    return 301 https://$host$request_uri;  # 自動跳轉到HTTPS

}


# HTTPS主服務

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;

    

    # 主應用

    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;

    }

    

    # 子路徑應用

    location /blog {

        proxy_pass http://192.168.1.101:8080;  # 映射到內部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服務

    location /api {

        proxy_pass http://192.168.1.102:3000;  # 映射到內部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

    • 添加上述配置(根據您的需求調整)

  2. 測試配置

cd C:\nginx

nginx -t

  1. 重新加載配置

nginx -s reload

多端口管理技巧

  1. 端口規劃表

    外部端口內部服務器內部端口用途協議
    80192.168.1.10080主網站HTTP
    443192.168.1.10080主網站(HTTPS)HTTPS
    8080192.168.1.1018080測試環境HTTP
    8888192.168.1.1023000API服務HTTP
  2. 高級配置選項

location / {

    proxy_pass http://backend;

    

    # 連接優化參數

    proxy_connect_timeout 60s;

    proxy_send_timeout 60s;

    proxy_read_timeout 60s;

    proxy_buffers 8 16k;

    proxy_buffer_size 32k;

    

    # 保持真實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 {

    # 為不同服務設置不同日志

    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. 防火墻設置

# 允許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. 驗證真實IP

    • 在后端服務器創建測試頁面:

<?php

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

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

?>

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


相關教程:

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


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