Nginx 默认内置 ngx_http_uwsgi_module,无需额外启用;编译时未加 --without-http_uwsgi_module 即可用,配置中需 include uwsgi_params 并正确使用 uwsgi_pass 指令。

Nginx 源码编译启用 uwsgi 模块,其实不需要额外“启用”——因为 ngx_http_uwsgi_module 是 Nginx 的默认内置模块,只要不是用 --without-http_uwsgi_module 显式禁用,它就始终可用。
关键点在于:你不需要手动开启或加载该模块,但必须在配置中正确使用 uwsgi_pass 指令,并确保 uwsgi_params 文件存在且被 include。
✅ 编译时确认 uwsgi 模块已包含
Nginx 1.0+ 版本默认编译进以下 HTTP 模块(无需开关):
ngx_http_uwsgi_modulengx_http_fastcgi_modulengx_http_scgi_modulengx_http_proxy_module
验证方式(编译安装后):
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o "http_uwsgi"
若输出 http_uwsgi,说明模块已内置。
⚠️ 注意:
--without-http_uwsgi_module才会移除它;绝大多数源码编译默认保留。
✅ 编译 Nginx 的典型命令(含常见依赖)
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-pcre \ --with-zlib make && make install
以上命令不加任何禁用选项,uwsgi 模块自然可用。
✅ 配置中正确使用 uwsgi(重点)
模块存在 ≠ 自动生效。你必须在 nginx.conf 中显式配置:
location / {
include uwsgi_params; # 必须包含此文件(通常位于 conf/ 或 share/nginx/ 下)
uwsgi_pass 127.0.0.1:9000; # 或 unix:/tmp/myapp.sock;
uwsgi_read_timeout 300;
}
-
uwsgi_params文件一般随 Nginx 源码自带(路径如nginx-1.24.0/conf/uwsgi_params),编译安装后通常复制到/usr/local/nginx/conf/。 - 若缺失,可手动创建或从源码目录拷贝。
❌ 常见误区
- 认为要像第三方模块一样加
--add-module=xxx:❌ 不需要,uwsgi是官方核心模块。 - 在
nginx -V输出里没看到--with-http_uwsgi_module就以为没启用:❌ 它是默认 built-in,不显示在 configure 参数中。 -
uwsgi_pass报错unknown directive:通常是拼写错误(如写成uwsgi_passs)或include uwsgi_params;被注释/路径错误。
✅ 补充:检查 uwsgi_params 是否可用
运行以下命令确认文件存在:
find /usr/local/nginx -name "uwsgi_params" 2>/dev/null # 正常应返回类似:/usr/local/nginx/conf/uwsgi_params
如果找不到,可从 Nginx 源码包中复制:
cp /path/to/nginx-source/conf/uwsgi_params /usr/local/nginx/conf/
内容本质是一组 uwsgi_param 映射,例如:
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; # ...(共 20+ 行)
不复杂但容易忽略。











