nginx 正向代理
Linux 2024/9/30 16:25:58 点击:不统计
nginx 正向代理,比如你想访问日本亚马逊api接口 但是访问不了,你需要找个代理。nginx 就可以代理。
比如你有个 日本服务器A 在服务器设置nginx 代理后,就可以通过 代理访问了 (切记国内任何厂商的任何地方服务器不能做代理)
1. 需要新安装nginx 扩展 ngx_http_proxy_connect_module
(1)下载扩展
git clone git@github.com:chobits/ngx_http_proxy_connect_module.git
下载完毕后
查看nginx 版本
nginx -V
匹配 对应nginx 版本 版本对应参考(或者本页面最下面) https://github.com/chobits/ngx_http_proxy_connect_module?tab=readme-ov-file#select-patch
到nginx 按照源文件 目录下,蓝色的为对应nginx patch 版本
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
(2) 如果是lnmp.org 新安装包安装,需要调整 2个地方
第一找到 lnmp.conf 添加对应配置
Nginx_Modules_Options='--add-module=/path/ngx_http_proxy_connect_module'
第二 patch 对应版本,同上
如果新安装 则在 include/nginx.sh 114行 如果是更新增加扩展 则在 include/upgrade_nginx.sh 59行 找到 Tar_Cd 位置
添加
patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
然后更新安装即可。
(3) 如果是已经安装的,或者正在运行的 。
首先下载对应版本的nginx ,解压,然后运行 patch
获取已经安装的扩展
nginx -V
再当前下载nginx 文件夹执行
./configure <原来的编译参数> \ --add-module=/path/to/ngx_http_proxy_connect_module
make
到此为止,切记不要 make install
然后备份原来的nginx 安装后文件
比如 cp /usr/sbin/nginx /usr/sbin/nginx.bak
然后将 当前新文件夹中的 生成文件替换 cp objs/nginx /usr/sbin/nginx 。
然后运行nginx -V 检查是否已经添加成功。
2. 添加nginx 配置
server
{
listen 443 ssl;
server_name youdomain;
ssl_certificate /usr/local/nginx/conf/cert/x.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/x.key;
resolver 114.114.114.114;
resolver_timeout 30s;
proxy_connect; #启用 CONNECT HTTP方法
proxy_connect_allow 443 563; #指定代理CONNECT方法可以连接的端口号或范围的列表
proxy_connect_connect_timeout 60s; #定义客户端与代理服务器建立连接的超时时间
proxy_connect_read_timeout 60s; #定义客户端从代理服务器读取响应的超时时间
proxy_connect_send_timeout 60s;
# 反向代理配置
location / {
if ($http_token = "") {
return 401 "APIKEY Empty"; # 可以防止被访问
}
proxy_pass https://$http_host$request_uri; # 将请求转发到后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_ssl_protocols TLSv1.2 TLSv1.3;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
}
access_log /usr/local/nginx/logs/daili.ssl.log;
}
如果不是https 的 去掉相关ssl 即可
3. 通过nginx request post 代理访问即可。
3. 通过nginx request post 代理访问即可。
版本对应参考
nginx version enable REWRITE phase patch
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
·上一篇:aliyun 阿里云服务器初始化 >> ·下一篇:nginx设置拒绝服务 >>