nginx 正向代理
环境规划
序号 |
IP地址 |
操作系统 |
用途 |
1 |
192.168.174.126(外网) 192.168.80.128 (内网) |
ubuntu 23.10 |
代理服务器 |
2 |
192.168.80.129 (内网) |
ubuntu 23.10 |
Linux客户端 |
软件版本
nginx:1.24.0
代理模块:proxy_connect_rewrite_102101.patch
安装 nginx
# cd nginx-1.24.0
# patch -p1 < /root/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch
patching file src/http/ngx_http_core_module.c
patching file src/http/ngx_http_parse.c
patching file src/http/ngx_http_request.c
Hunk #1 succeeded at 1104 (offset -14 lines).
Hunk #2 succeeded at 1742 (offset -14 lines).
Hunk #3 succeeded at 2045 (offset -30 lines).
patching file src/http/ngx_http_request.h
Hunk #1 succeeded at 416 (offset 5 lines).
patching file src/http/ngx_http_variables.c
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-stream_ssl_preread_module --with-poll_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-cc-opt=-Wno-error --with-ld-opt= --user=nginx --group=nginx --with-threads --with-file-aio --http-client-body-temp-path=/usr/local/nginx/client/ --http-proxy-temp-path=/usr/local/nginx/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/fcgi/ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi --http-scgi-temp-path=/usr/local/nginx/scgi --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/nginx.pid --lock-path=/usr/local/nginx/nginx.lock --with-pcre --add-module=/root/ngx_http_proxy_connect_module
make -j 8 && make install
proxy.conf
server {
listen 88;
server_name localhost;
resolver 202.106.0.20 ipv6=off; # DNS解析, 禁用 ipv6
# 配置代理请求的缓冲区大小
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# ngx_http_proxy_connect_module 参数配置
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_timeout 30s;
proxy_connect_send_timeout 60s;
proxy_connect_read_timeout 60s;
# 设置代理访问日志
#access_log /var/log/nginx/proxy.access.log main;
location / {
# 配置需要代理的目标服务器地址和端口
proxy_pass http://$http_host;
# 配置代理请求的头信息
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_connect_timeout 5s;
proxy_send_timeout 10s;
proxy_read_timeout 10s;
# 配置代理请求的缓冲区大小
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
# 可选:禁用缓存
# proxy_cache off;
}
}
客户端代理配置
export http_proxy=http://192.168.80.128:88
export https_proxy=http://192.168.80.128:88
客户端HTTP测试
# curl -I http://www.baidu.com
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Mon, 18 Mar 2024 04:47:20 GMT
Content-Type: text/html
Content-Length: 277
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Etag: "575e1f59-115"
Last-Modified: Mon, 13 Jun 2016 02:50:01 GMT
Pragma: no-cache
客户端HTTPS测试
# curl -I https://www.baidu.com
HTTP/1.1 200 Connection Established
Proxy-agent: nginx
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 18 Mar 2024 04:48:14 GMT
Etag: "575e1f59-115"
Last-Modified: Mon, 13 Jun 2016 02:50:01 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
参考文档
https://github.com/chobits/ngx_http_proxy_connect_module
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-03-18 nginx 499错误解决办法