Nginx 官方源码默认静态编译 ngx_http_proxy_module,无需额外启用;通过 nginx -V | grep with-http_proxy_module 确认内置,配置中使用 proxy_pass 指令才生效,注意区分反向代理模块与第三方正向代理模块。

Nginx 的 ngx_http_proxy_module 默认就是静态编译进官方源码的,不需要额外启用或动态加载,只要用的是标准 Nginx 源码包(非精简版),它就已经存在且可用。
你真正要做的,是确认它是否已内置,并在配置中正确使用 proxy_pass 等指令——模块本身不靠开关控制,而靠配置触发。
怎么确认 proxy 模块已编译进 Nginx
运行这条命令:
nginx -V 2>&1 | grep with-http_proxy_module
- 如果输出里有
with-http_proxy_module,说明模块已内置; - 如果没输出,大概率是你用的不是标准 Nginx(比如 Alpine 小体积镜像、OpenResty 精简版、某些第三方打包版)。
⚠️ 注意:
nginx -v(小写 v)只显示版本号;必须用nginx -V(大写 V)才能看到编译参数。
如果需要从源码重编译并确保 proxy 模块可用
虽然默认已启用,但为明确意图,可在 ./configure 时显式带上:
./configure \ --with-http_proxy_module \ --prefix=/usr/local/nginx \ [其他你需要的选项,如 --with-http_ssl_module]
常见配套选项建议:
-
--with-http_ssl_module:支持 HTTPS 反向代理必需; -
--with-stream:如需 TCP/UDP 代理; -
--with-http_realip_module:获取真实客户端 IP; -
--with-http_v2_module:启用 HTTP/2。
然后执行:
make && sudo make install
安装完成后,再运行 nginx -V 验证是否含 with-http_proxy_module。
Proxy 模块生效的关键:配置不能少
模块存在 ≠ 自动工作。必须在 nginx.conf 中正确配置 location + proxy_pass,例如:
location /api/ {
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
没有 proxy_pass 指令,ngx_http_proxy_module 就不会被调用。
补充说明:别和 proxy_connect 模块混淆
-
ngx_http_proxy_module:负责反向代理(服务端代理),官方自带; -
ngx_http_proxy_connect_module:负责正向代理(HTTPS),是第三方模块,需手动打补丁、编译,和proxy_pass无关。
如果你实际想实现的是“让客户端通过 Nginx 访问外网(如浏览器设代理)”,那才是 proxy_connect 的场景,不属于本模块范畴。
模块就位、配置写对、服务重启——三步闭环,proxy 功能就稳了。











