要使用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流量。