nginx 编译需显式启用内置 scgi 模块:configure 时加 --with-http_scgi_module;启用后须在 nginx.conf 中配置 scgi_pass 和 include scgi_params 才能实际使用。

Nginx 源码编译默认不启用 SCGI 模块,它属于内置但需显式开启的模块。要让 Nginx 支持 SCGI 协议(例如对接 Python 或其他 SCGI 应用),必须在 ./configure 阶段加入对应参数。
编译时启用 SCGI 模块
SCGI 功能由 ngx_http_scgi_module 提供,该模块无需额外安装第三方代码,只要在 configure 时加上 --with-http_scgi_module 即可启用:
./configure \ --prefix=/usr/local/nginx \ --with-http_scgi_module \ # 其他你所需的模块,如 ssl、gzip、realip 等 --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_realip_module
✅ 注意:
--with-http_scgi_module是唯一必需参数;不需要--add-module=引入外部代码,它已是 Nginx 官方源码的一部分。
启用后还需配置才能实际使用
仅编译启用还不够,还需在 nginx.conf 中配置 location 块调用 scgi_pass:
location / {
include scgi_params; # 加载预定义的 SCGI 参数(通常位于 conf/scgi_params)
scgi_pass 127.0.0.1:9000; # 指向你的 SCGI 应用监听地址
}
确保 scgi_params 文件存在(标准编译安装后位于 conf/ 目录下),内容类似:
scgi_param SCGI 1; scgi_param REQUEST_METHOD $request_method; scgi_param REQUEST_URI $request_uri; scgi_param QUERY_STRING $query_string; scgi_param CONTENT_TYPE $content_type; scgi_param CONTENT_LENGTH $content_length; # ……其余参数略
验证是否成功启用
编译安装完成后,运行:
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o with-http_scgi_module
若输出 with-http_scgi_module,说明模块已编译进二进制。
再检查运行时是否加载:
/usr/local/nginx/sbin/nginx -t
无报错即表示配置语法正确,SCGI 可用。
不复杂但容易忽略











