Connect 代理
最后更新于:2022-04-02 03:10:43
[TOC]
## 概述
**作用**
使用 CONNECT 的方式 进行代理,可以动态的指定目标代理的地址
```
CONNECT 192.168.0.103:6667 HTTP/1.1
Host: 192.168.0.103"6667
HTTP/1.1 200 Connection establisehd
```
请求 CONNECT 方法,返回 200 code
**使用场景**
根据客户端向指定的服务器代理发送文件内容,即可在HOST 中指定代理的目标地址
## 实现方式
### 使用 goproxy
[github](https://github.com/snail007/goproxy/blob/master/README_ZH.md)
执行
```
proxy http -p :6670
```
### nginx
[ngx_http_proxy_connect_module github 地址](https://github.com/chobits/ngx_http_proxy_connect_module#name)
nginx 要支持 CONNECT 代理,需要添加第三方模块
```
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-threads \
--add-module=/root/src/ngx_http_proxy_connect_module
```
配置 vhost 文件
```
server {
listen 443;
# dns resolver used by forward proxying
resolver 114.114.114.114;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
```
';