要使用Nginx作為正向代理訪問HTTPS網站,需通過CONNECT
方法建立隧道。以下是操作詳細步驟:
1. 安裝Nginx及依賴模塊
-
需要模塊:
ngx_http_proxy_connect_module
(支持CONNECT
方法)。 -
安裝方式:需重新編譯Nginx。
bash
復制
# 下載Nginx源碼和模塊 wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0/git clone https://github.com/chobits/ngx_http_proxy_connect_module.git# 配置編譯參數(確保原有參數不變,追加模塊) ./configure \--add-module=./ngx_http_proxy_connect_module \--with-http_ssl_module # 啟用SSL支持# 編譯并安裝 make && sudo make install
2. 配置Nginx正向代理
編輯配置文件(如/usr/local/nginx/conf/nginx.conf
):
nginx
復制
http {resolver 8.8.8.8; # 配置DNS解析服務器server {listen 3128; # 代理監聽端口# 允許CONNECT方法(HTTPS默認端口443)proxy_connect;proxy_connect_allow 443;location / {# 正向代理核心配置proxy_pass http://$http_host$request_uri;proxy_set_header Host $http_host;# 可選:添加代理身份驗證# auth_basic "Proxy Authentication Required";# auth_basic_user_file /path/to/htpasswd;}} }
3. 啟動/重載Nginx
bash
復制
# 檢查配置語法 nginx -t# 啟動或重載配置 nginx -s reload
4. 客戶端使用代理
瀏覽器設置
-
配置代理地址為
Nginx服務器IP:3128
,協議選擇HTTP(代理本身使用HTTP,但可代理HTTPS請求)。
命令行測試(如curl)
bash
復制
curl -x http://your_nginx_ip:3128 https://example.com
關鍵注意事項
-
防火墻:確保代理端口(如
3128
)開放。 -
安全性:
-
限制訪問IP:通過
allow/deny
規則控制。 -
啟用認證:使用
auth_basic
設置用戶名密碼。
-
-
日志調試:檢查
error.log
排查連接問題。 -
CONNECT限制:默認僅允許443端口,可通過
proxy_connect_allow
擴展。
常見問題
-
無法解析域名:檢查
resolver
配置是否正確。 -
代理拒絕連接:確認
proxy_connect
指令和端口權限。 -
SSL證書警告:正向代理不干預SSL握手,客戶端需信任目標站點證書。
通過以上步驟,Nginx即可作為正向代理處理HTTPS流量。