跳转至

proxy-connect: 在 NGINX 中支持 CONNECT 方法

安装

您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7、8、9 和 10
  • CentOS 7、8、9
  • AlmaLinux 8、9
  • Rocky Linux 8、9
  • Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-proxy-connect
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-proxy-connect

通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用该模块:

load_module modules/ngx_http_proxy_connect_module.so;

本文档描述了 nginx-module-proxy-connect v0.0.2,发布于 2024 年 12 月 24 日。


此分支集成在 NGINX-MOD 中。

[!CAUTION] 目前不建议将其编译为动态模块,打补丁的 NGINX 二进制文件将无法识别标志 NGX_HTTP_PROXY_CONNECT。 唯一正确的方法是同时编译 NGINX 和动态模块,然后在打包时移除该模块。

[!CAUTION] 现有的补丁不符合 ABI,因为它在中间添加了字段。

此模块提供对 CONNECT 方法请求 的支持。 该方法主要用于通过代理服务器 隧道 SSL 请求

示例

配置示例

server {
    listen                         3128;

    # 转发代理使用的 DNS 解析器
    resolver                       8.8.8.8;

    # CONNECT 请求的转发代理
    proxy_connect;
    proxy_connect_allow            443 563;
    proxy_connect_connect_timeout  10s;
    proxy_connect_data_timeout     10s;

    # 为非 CONNECT 请求自定义定义
    # 示例:非 CONNECT 请求的反向代理
    location / {
        proxy_pass http://$host;
        proxy_set_header Host $host;
    }
}
  • resolver 指令必须在 server {} 块(或 http {} 块)中全局配置。
  • 任何 location {} 块、upstream {} 块以及其他任何标准后端/上游指令,例如 proxy_pass,都不会影响此模块的功能。(proxy_connect 模块仅对使用 CONNECT 方法且在此隧道下有数据流的请求执行逻辑。)
  • 如果您不想处理非 CONNECT 请求,可以将 location {} 块修改如下:
        location / {
            return 403 "Non-CONNECT requests are forbidden";
        }
        ```
    
    curl 示例
    ----------------
    
    使用上述配置([配置示例](#configuration-example)),您可以通过 HTTP CONNECT 隧道访问任何 https 网站。使用命令 `curl` 的简单测试如下:
    
    $ curl https://github.com/ -v -x 127.0.0.1:3128
  • Trying 127.0.0.1... -.
  • Connected to 127.0.0.1 (127.0.0.1) port 3128 (#0) | curl 创建与 nginx(使用 proxy_connect 模块)的 TCP 连接。
  • Establish HTTP proxy tunnel to github.com:443 -'

    CONNECT github.com:443 HTTP/1.1 -. Host: github.com:443 (1) | curl 发送 CONNECT 请求以创建隧道。 User-Agent: curl/7.43.0 | Proxy-Connection: Keep-Alive -'

    < HTTP/1.0 200 Connection Established .- nginx 回复 200,表示隧道已建立。 < Proxy-agent: nginx (2)| (客户端现在被代理到远程主机。发送给 nginx 的任何数据 < '- 现在都被转发到远程主机)

  • Proxy replied OK to CONNECT request

  • TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -.
  • Server certificate: github.com |
  • Server certificate: DigiCert SHA2 Extended Validation Server CA | curl 通过隧道发送 "https://github.com" 请求,
  • Server certificate: DigiCert High Assurance EV Root CA | proxy_connect 模块将数据代理到远程主机(github.com)。

    GET / HTTP/1.1 | Host: github.com (3) | User-Agent: curl/7.43.0 | Accept: / -'

    < HTTP/1.1 200 OK .- < Date: Fri, 11 Aug 2017 04:13:57 GMT | < Content-Type: text/html; charset=utf-8 | 从远程主机接收到的任何数据将由 proxy_connect 模块发送到客户端 < Transfer-Encoding: chunked |
    < Server: GitHub.com (4)| < Status: 200 OK | < Cache-Control: no-cache | < Vary: X-PJAX | ... | ... <其他响应头和响应体> ... | ... '-

    上述示例的序列图如下:
    
    curl nginx (proxy_connect) github.com | | | (1) |-- CONNECT github.com:443 -->| | | | | | |----[ TCP connection ]--->| | | | (2) |<- HTTP/1.1 200 ---| | | Connection Established | | | | | | | ========= CONNECT 隧道已建立。 =========== | | | | | | | | | [ SSL stream ] | | (3) |---[ GET / HTTP/1.1 ]----->| [ SSL stream ] | | [ Host: github.com ] |---[ GET / HTTP/1.1 ]-->. | | [ Host: github.com ] | | | | | | | | | | | | [ SSL stream ] | | [ SSL stream ] |<--[ HTTP/1.1 200 OK ]---' (4) |<--[ HTTP/1.1 200 OK ]------| [ < html page > ] | | [ < html page > ] | | | | |
    HTTPS 中 CONNECT 请求的配置示例
    --------------------------------------------------
    
    ```nginx
    server {
        listen                         3128 ssl;
    
        # 通过 openssl 命令生成的自签名证书
        ssl_certificate_key            /path/to/server.key;
        ssl_certificate                /path/to/server.crt;
        ssl_session_cache              shared:SSL:1m;
    
        # 转发代理使用的 DNS 解析器
        resolver                       8.8.8.8;
    
        # CONNECT 请求的转发代理
        proxy_connect;
        proxy_connect_allow            443 563;
        proxy_connect_connect_timeout  10s;
        proxy_connect_data_timeout     10s;
    
        # 为非 CONNECT 请求自定义定义
        # 示例:非 CONNECT 请求的反向代理
        location / {
            proxy_pass http://$host;
            proxy_set_header Host $host;
        }
    }
    

curl 示例(HTTPS 中的 CONNECT 请求)

使用上述配置(HTTPS 中 CONNECT 请求的配置示例),您可以通过 HTTPS CONNECT 隧道访问任何 https 网站(HTTPS 中的 CONNECT 请求)。使用命令 curl 的简单测试如下:

使用 curl 命令的提示:

  • -x https://... 使 curl 通过 https 发送 CONNECT 请求。
  • --proxy-insecure 禁用与 nginx proxy_connect 服务器(https://localhost:3128)建立的 ssl 连接的 ssl 签名验证,但不禁用与代理后端服务器(示例中的 https://nginx.org)的验证。
  • 如果您想禁用与代理后端服务器的签名验证,可以使用 -k 选项。
curl 命令的输出 :point_left:

$ curl https://nginx.org/ -sv -o/dev/null -x https://localhost:3128 --proxy-insecure
*   Trying 127.0.0.1:3128...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 3128 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [112 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [799 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [300 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [37 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd
*  start date: Nov 25 08:36:38 2022 GMT
*  expire date: Nov 25 08:36:38 2023 GMT
*  issuer: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to nginx.org:443
} [5 bytes data]
> CONNECT nginx.org:443 HTTP/1.1
> Host: nginx.org:443
> User-Agent: curl/7.68.0
> Proxy-Connection: Keep-Alive
>
{ [5 bytes data]
< HTTP/1.1 200 Connection Established
< Proxy-agent: nginx
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* CONNECT phase completed!
* CONNECT phase completed!
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [80 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [2749 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [300 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [37 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=nginx.org
*  start date: Dec  9 15:29:31 2022 GMT
*  expire date: Mar  9 15:29:30 2023 GMT
*  subjectAltName: host "nginx.org" matched cert's "nginx.org"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
} [5 bytes data]
> GET / HTTP/1.1
> Host: nginx.org
> User-Agent: curl/7.68.0
> Accept: */*
>
{ [5 bytes data]
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx/1.21.5
< Date: Mon, 06 Mar 2023 06:05:24 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 7488
< Last-Modified: Tue, 28 Feb 2023 21:07:43 GMT
< Connection: keep-alive
< Keep-Alive: timeout=15
< ETag: "63fe6d1f-1d40"
< Accept-Ranges: bytes
<
{ [7488 bytes data]
* Connection #0 to host localhost left intact

浏览器示例

您可以配置浏览器使用此 nginx 作为代理服务器。

  • Google Chrome HTTPS 代理设置:指南和配置,了解如何在 SSL 层下配置此模块。

基本身份验证示例

我们可以使用 nginx auth basic 模块对 CONNECT 请求进行访问控制。
有关更多详细信息,请参见 此指南

WebSocket 代理示例

安装

选择补丁

  • 选择适合构建的补丁:
  • 所有补丁文件已包含在此模块的 patch/ 目录中。您无需直接从网页下载补丁。
nginx 版本 启用 REWRITE 阶段 补丁
1.4.x ~ 1.12.x NO proxy_connect.patch
1.4.x ~ 1.12.x YES proxy_connect_rewrite.patch
1.13.x ~ 1.14.x NO proxy_connect_1014.patch
1.13.x ~ 1.14.x YES proxy_connect_rewrite_1014.patch
1.15.2 YES proxy_connect_rewrite_1015.patch
1.15.4 ~ 1.16.x YES proxy_connect_rewrite_101504.patch
1.17.x ~ 1.18.x YES proxy_connect_rewrite_1018.patch
1.19.x ~ 1.21.0 YES proxy_connect_rewrite_1018.patch
1.21.1 ~ 1.22.x YES proxy_connect_rewrite_102101.patch
1.23.x ~ 1.24.0 YES proxy_connect_rewrite_102101.patch
1.25.0 ~ 1.26.x YES proxy_connect_rewrite_102101.patch
1.27.1 YES proxy_connect_rewrite_102101.patch
OpenResty 版本 启用 REWRITE 阶段 补丁
1.13.6 NO proxy_connect_1014.patch
1.13.6 YES proxy_connect_rewrite_1014.patch
1.15.8 YES proxy_connect_rewrite_101504.patch
1.17.8 YES proxy_connect_rewrite_1018.patch
1.19.3 YES proxy_connect_rewrite_1018.patch
1.21.4 YES proxy_connect_rewrite_102101.patch
1.25.3 YES proxy_connect_rewrite_102101.patch
  • proxy_connect_<VERSION>.patch 默认情况下禁用 CONNECT 请求的 nginx REWRITE 阶段,这意味着 ifsetrewrite_by_lua 和其他 REWRITE 阶段指令无法使用。
  • proxy_connect_rewrite_<VERSION>.patch 启用这些 REWRITE 阶段指令。

构建 nginx

  • 从源代码构建带有此模块的 nginx:
$ wget http://nginx.org/download/nginx-1.9.2.tar.gz
$ tar -xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2/
$ patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ make && make install

作为动态模块构建

  • 从 nginx 1.9.11 开始,您还可以通过在 ./configure 命令行中使用 --add-dynamic-module=PATH 选项来将此模块编译为动态模块,而不是 --add-module=PATH
$ wget http://nginx.org/download/nginx-1.9.12.tar.gz
$ tar -xzvf nginx-1.9.12.tar.gz
$ cd nginx-1.9.12/
$ patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
$ ./configure --add-dynamic-module=/path/to/ngx_http_proxy_connect_module
$ make && make install
  • 然后,您可以通过 load_module 指令在 nginx.conf 中显式加载该模块,例如,
load_module /path/to/modules/ngx_http_proxy_connect_module.so;
  • ❗ 请注意,ngx_http_proxy_connect_module.so 文件必须由与 .so 文件同时编译的 nginx 二进制文件加载。

构建 OpenResty

  • 从源代码构建带有此模块的 OpenResty:
$ wget https://openresty.org/download/openresty-1.19.3.1.tar.gz
$ tar -zxvf openresty-1.19.3.1.tar.gz
$ cd openresty-1.19.3.1
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ patch -d build/nginx-1.19.3/ -p 1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_101504.patch
$ make && make install

测试套件

  • 运行整个测试套件:
$ hg clone http://hg.nginx.org/nginx-tests/

## 如果您使用最新的 lua-nginx-module,需要 lua-resty-core 和
## lua-resty-lrucache,您应该在测试用例的 nginx.conf 中添加 "lua_package_path ...;" 指令。您可以使用以下命令:
#
## $ export TEST_NGINX_GLOBALS_HTTP='lua_package_path "/path/to/nginx/lib/lua/?.lua;;";'

$ export TEST_NGINX_BINARY=/path/to/nginx/binary
$ prove -v -I /path/to/nginx-tests/lib /path/to/ngx_http_proxy_connect_module/t/
  • 有关构建和测试此模块的完整过程,请参见:
  • 工作流文件:这里
  • 所有工作流的运行:这里

错误日志

此模块记录以 "proxy_connect:" 字符串开头的错误消息。
一些典型的错误日志如下所示:

  • proxy_connect 模块尝试与后端服务器建立隧道连接,但 TCP 连接超时。
2019/08/07 17:27:20 [error] 19257#0: *1 proxy_connect: upstream connect timed out (peer:216.58.200.4:443) while connecting to upstream, client: 127.0.0.1, server: , request: "CONNECT www.google.com:443 HTTP/1.1", host: "www.google.com:443"

指令

proxy_connect

语法:proxy_connect
默认值:none
上下文:server

启用 "CONNECT" HTTP 方法支持。

proxy_connect_allow

语法:proxy_connect_allow all | [port ...] | [port-range ...]
默认值:443 563
上下文:server

此指令指定代理 CONNECT 方法可以连接的端口号或范围的列表。
默认情况下,仅启用默认的 https 端口(443)和默认的 snews 端口(563)。
使用此指令将覆盖此默认值,仅允许连接到列出的端口。

all 将允许所有端口进行代理。

port 将允许指定端口进行代理。

port-range 将允许指定范围的端口进行代理,例如:

proxy_connect_allow 1000-2000 3000-4000; # 允许从 1000 到 2000 的端口范围,从 3000 到 4000 的端口范围。

proxy_connect_connect_timeout

语法:proxy_connect_connect_timeout time
默认值:none
上下文:server

定义与代理服务器建立连接的超时时间。

proxy_connect_data_timeout

语法:proxy_connect_data_timeout time
默认值:60s
上下文:server

设置在客户端或代理服务器连接上进行两次连续读或写操作之间的超时时间。如果在此时间内没有传输数据,则连接将关闭。

proxy_connect_read_timeout

语法:proxy_connect_read_timeout time
默认值:60s
上下文:server

已弃用。

它与指令 proxy_connect_data_timeout 的功能相同,出于兼容性考虑。您可以仅配置其中一个指令(proxy_connect_data_timeoutproxy_connect_read_timeout)。

proxy_connect_send_timeout

语法:proxy_connect_send_timeout time
默认值:60s
上下文:server

已弃用。

它没有功能。

proxy_connect_address

语法:proxy_connect_address address | off
默认值:none
上下文:server

指定代理服务器的 IP 地址。地址可以包含变量。
特殊值 off 等于 none,使用从 CONNECT 请求行的主机名解析的 IP 地址。

注意:如果同时使用 set $<nginx variable>proxy_connect_address $<nginx variable>,则应使用 proxy_connect_rewrite.patch,有关更多详细信息,请参见 安装

proxy_connect_bind

语法:proxy_connect_bind address [transparent] | off
默认值:none
上下文:server

使与代理服务器的外发连接从指定的本地 IP 地址(可选端口)发起。
参数值可以包含变量。特殊值 off 等于 none,允许系统自动分配本地 IP 地址和端口。

transparent 参数允许与代理服务器的外发连接从非本地 IP 地址发起,例如,从客户端的真实 IP 地址:

proxy_connect_bind $remote_addr transparent;

为了使此参数生效,通常需要以 superuser 权限运行 nginx 工作进程。在 Linux 上不需要(1.13.8),因为如果指定了 transparent 参数,工作进程将从主进程继承 CAP_NET_RAW 能力。还需要配置内核路由表以拦截来自代理服务器的网络流量。

注意:如果同时使用 set $<nginx variable>proxy_connect_bind $<nginx variable>,则应使用 proxy_connect_rewrite.patch,有关更多详细信息,请参见 安装

proxy_connect_response

语法:proxy_connect_response CONNECT response
默认值:HTTP/1.1 200 Connection Established\r\nProxy-agent: nginx\r\n\r\n
上下文:server

设置 CONNECT 请求的响应。

请注意,它仅用于 CONNECT 请求,无法修改通过 CONNECT 隧道的数据流。

例如:

proxy_connect_response "HTTP/1.1 200 Connection Established\r\nProxy-agent: nginx\r\nX-Proxy-Connected-Addr: $connect_addr\r\n\r\n";

使用上述配置的 curl 命令测试用例如下:

$ curl https://github.com -sv -x localhost:3128
* Connected to localhost (127.0.0.1) port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to github.com:443
> CONNECT github.com:443 HTTP/1.1
> Host: github.com:443
> User-Agent: curl/7.64.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection Established            --.
< Proxy-agent: nginx                               | 自定义 CONNECT 响应
< X-Proxy-Connected-Addr: 13.229.188.59:443      --'
...

变量

$connect_host

来自 CONNECT 请求行的主机名。

$connect_port

来自 CONNECT 请求行的端口。

$connect_addr

远程主机的 IP 地址和端口,例如 "192.168.1.5:12345"。 IP 地址是从 CONNECT 请求行的主机名解析的。

$proxy_connect_connect_timeout

获取或设置 proxy_connect_connect_timeout 指令 的超时时间。

例如:

## 设置默认值

proxy_connect_connect_timeout   10s;
proxy_connect_data_timeout      10s;

## 重叠默认值

if ($host = "test.com") {
    set $proxy_connect_connect_timeout  "10ms";
    set $proxy_connect_data_timeout     "10ms";
}

$proxy_connect_data_timeout

获取或设置 proxy_connect_data_timeout 指令 的超时时间。

$proxy_connect_read_timeout

已弃用。 它仍然可以获取或设置 proxy_connect_data_timeout 指令 的超时时间以保持兼容性。

$proxy_connect_send_timeout

已弃用。 它没有功能。

$proxy_connect_resolve_time

保持名称解析所花费的时间;时间以秒为单位,精确到毫秒。

  • 值为 "" 表示此模块在此请求上不起作用。
  • 值为 "-" 表示名称解析失败。

$proxy_connect_connect_time

保持与上游服务器建立连接所花费的时间;时间以秒为单位,精确到毫秒。

  • 值为 "" 表示此模块在此请求上不起作用。
  • 值为 "-" 表示名称解析或连接失败。

$proxy_connect_first_byte_time

保持从上游服务器接收第一个字节数据所花费的时间;时间以秒为单位,精确到毫秒。

  • 值为 "" 表示此模块在此请求上不起作用。
  • 值为 "-" 表示名称解析、连接或接收失败。

$proxy_connect_response

获取或设置 CONNECT 请求的响应。
CONNECT 请求的默认响应为 "HTTP/1.1 200 Connection Established\r\nProxy-agent: nginx\r\n\r\n"。

请注意,它仅用于 CONNECT 请求,无法修改通过 CONNECT 隧道的数据流。

例如:

## 修改默认 Proxy-agent 头
set $proxy_connect_response "HTTP/1.1 200\r\nProxy-agent: nginx/1.19\r\n\r\n";

变量值不支持 nginx 变量。您可以使用 lua-nginx-module 构造包含 nginx 变量的字符串。例如:

## CONNECT 响应可能是 "HTTP/1.1 200\r\nProxy-agent: nginx/1.19.6\r\n\r\n"

rewrite_by_lua '
    ngx.var.proxy_connect_response =
      string.format("HTTP/1.1 200\\r\\nProxy-agent: nginx/%s\\r\\n\\r\\n", ngx.var.nginx_version)
';

还请注意,setrewrite_by_lua* 指令在 REWRITE 阶段运行,位于 DNS 解析阶段之前。它无法获取某些变量的正确值,例如 $connect_addr 的值为 nil。在这种情况下,您应使用 proxy_connect_response 指令

兼容性

Nginx 兼容性

最新模块与以下版本的 nginx 兼容:

  • 1.27.1 (1.27.x 主线版本)
  • 1.26.2 (1.26.x 版本)
  • 1.24.0 (1.24.x 版本)
  • 1.22.1 (1.22.x 版本)
  • 1.20.2 (1.20.x 版本)
  • 1.18.0 (1.18.x 版本)
  • 1.16.1 (1.16.x 版本)
  • 1.14.2 (1.14.x 版本)
  • 1.12.1 (1.12.x 版本)
  • 1.10.3 (1.10.x 版本)
  • 1.8.1 (1.8.x 版本)
  • 1.6.3 (1.6.x 版本)
  • 1.4.7 (1.4.x 版本)

OpenResty 兼容性

最新模块与以下版本的 OpenResty 兼容:

  • 1.25.3 (版本:1.25.3.1)
  • 1.21.4 (版本:1.21.4.3)
  • 1.19.3 (版本:1.19.3.1)
  • 1.17.8 (版本:1.17.8.2)
  • 1.15.8 (版本:1.15.8.1)
  • 1.13.6 (版本:1.13.6.2)

Tengine 兼容性

此模块已集成到 Tengine 2.3.0 中。

常见问题解答

请参见 常见问题解答页面

已知问题

  • HTTP/2 中,不支持 CONNECT 方法。它仅支持 HTTP/1.x 和 HTTPS 中的 CONNECT 方法请求。

另请参见

作者

许可证

有关详细信息,请参见 许可证

GitHub

您可以在 nginx-module-proxy-connect 的 GitHub 仓库 中找到此模块的其他配置提示和文档。