首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Nginx搭建支持HTTP CONNECT请求的代理服务器

用Nginx搭建支持HTTP CONNECT请求的代理服务器

作者头像
YaoQi
发布2025-07-14 19:07:52
发布2025-07-14 19:07:52
23100
代码可运行
举报
运行总次数:0
代码可运行

如果你不了解 HTTP CONNECT请求,可以参考《web代理是怎样工作的》中的HTTPS代理部分。

Nginx是作为反向代理服务器开发的,官方并不支持 CONNECT请求。

(注:正向代理和反向代理都是代理,工作起来也很像。正向代理是请求到来时才知道代理的目标;反向代理是代理的目标已经配好,等待请求的到来)

阿里的工程师chobits 开发了ngx_http_proxy_connect_module来支持这一请求。

但是,使用此模块需要自己编译Nginx,可以根据文末参考链接[1][2]。

也有人制作了编译好的Nginx Docker镜像,见文末连接[3]。

这里就基于这个Docker镜像测试下这个功能。

创建一个实验路径:

代码语言:javascript
代码运行次数:0
运行
复制
mkdir nginx_connect
cd nginx_connect

编写docker compose配置文件

代码语言:javascript
代码运行次数:0
运行
复制
# file compose.yaml
services:
  nginx_connect:
    image: "dockerproxy.net/runalsh/nginx:deb-1.27.3"
    user: "root"
    ports:
      - "8081:80"
    volumes:
      - ./data/nginx:/etc/nginx/conf.d/

注:镜像是用的镜像站或代理站下载的,例如

代码语言:javascript
代码运行次数:0
运行
复制
docker pull dockerproxy.net/runalsh/nginx:deb-1.27.3

编写nginx配置文件

代码语言:javascript
代码运行次数:0
运行
复制
mkdir ./data/nginx
vim ./data/nginx/http_connect_server.conf

# file http_connect_server.conf
server {
    listen                         80;

    # dns resolver used by forward proxying
    resolver                       1.1.1.1;

    # forward proxy for CONNECT requests
    proxy_connect;
    proxy_connect_allow            all;
    proxy_connect_connect_timeout  10s;
    proxy_connect_data_timeout     10s;

    # defined by yourself for non-CONNECT requests
    # Example: reverse proxy for non-CONNECT requests
    location / {
        proxy_pass http://$host;
        proxy_set_header Host $host;
    }
}

启动服务器

代码语言:javascript
代码运行次数:0
运行
复制
docker compose up -d

测试

用 curl -x 测试:

代码语言:javascript
代码运行次数:0
运行
复制
curl -svo /dev/null https://www.baidu.com/ -x 127.0.0.1:8081
图片
图片

用 socat PROXY 代理测试:

代码语言:javascript
代码运行次数:0
运行
复制
socat - PROXY:127.0.0.1:www.baidu.com:80,proxyport=8081
图片
图片

用 nc -X connect 代理测试:

代码语言:javascript
代码运行次数:0
运行
复制
nc -X connect -x 127.0.0.1:8081 www.baidu.com 80

参考:

[1] https://www.alibabacloud.com/blog/how-to-use-nginx-as-an-https-forward-proxy-server_595799

[2] https://github.com/chobits/ngx_http_proxy_connect_module

[3] https://hub.docker.com/r/runalsh/nginx

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漫跑的小兔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档