Nginx配置正向代理

吴书松
吴书松
发布于 2025-09-03 / 8 阅读
0
0

Nginx配置正向代理


        # HTTP 正向代理服务器配置
        server {
                listen 31011;  # 代理服务监听端口

                # 访问日志
                #access_log /var/log/nginx/proxy.access.log proxy_format;
                #error_log /var/log/nginx/proxy.error.log;

                # DNS解析设置
                resolver 8.8.8.8 114.114.114.114 valid=300s;
                resolver_timeout 5s;

                # 启用正向代理功能,并允许代理到443端口(HTTPS)
                proxy_connect;
                proxy_connect_allow            443;
                proxy_connect_connect_timeout  10s;
                proxy_connect_data_timeout     10s;


                # 正向代理配置
                location / {
                    # 允许所有客户端访问(生产环境应限制)
                    allow all;

                   # 设置代理请求头,传递原始主机名和客户端IP等信息:cite[1]:cite[8]
                   proxy_set_header Host $http_host;
                   proxy_set_header X-Real-IP $remote_addr;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                   # 代理连接超时设置
                   proxy_connect_timeout 30s;
                   proxy_read_timeout 30s;
                   proxy_send_timeout 30s;

                  # 代理缓冲设置
                  proxy_buffering on;
                  proxy_buffer_size 4k;
                  proxy_buffers 8 4k;

                  # 代理到目标HTTP服务器
                  proxy_pass http://$http_host;
         }
     }

配置说明与注意事项

  • DNS 解析 (resolver): 必须配置。Nginx 正向代理需要它来解析目标域名2

  • 端口限制 (proxy_connect_allow): proxy_connect_allow 443; 表示只允许代理到目标服务器的 443 端口(HTTPS)。你也可以允许其他端口,如 proxy_connect_allow 443 563;

  • 访问控制: 上面的配置为了简洁,设置了 allow all。在生产环境中,强烈建议你使用 allowdeny 指令限制可以访问代理服务器的客户端 IP 地址范围,或者配置 auth_basic 进行用户名密码认证,以防止代理被滥用。

  • 日志: 可以使用 access_logerror_log 指令记录代理访问日志,便于排查问题。

测试

curl -x http://192.168.1.111:31011 http://httpbin.org/ip

重要提醒

  • 网络安全: 对外开放代理端口存在风险。务必使用防火墙(如 iptables 或云服务器安全组)严格限制访问代理端口的源 IP,最好只允许你自己的内部网络或特定服务器访问。

  • 性能: 正向代理会消耗 Nginx 服务器的带宽和资源。如果代理请求量很大,请确保服务器有足够的性能支撑,并适当调整 worker_processesworker_connections 以及 proxy_connect_timeout 等参数。

  • 替代方案: 如果仅仅是为了在开发调试时代理微信请求,有时在代码中或网络库中直接设置 HTTP 代理可能更简单。但对于需要全局代理或复杂网络拓扑的情况,Nginx 正向代理是一个强大的工具。


评论