Nginx默认内置ngx_http_rewrite_module模块,标准发行版和源码编译均默认启用,依赖PCRE库支持正则匹配,可通过nginx -V | grep with-http_rewrite_module验证;若配置中出现unknown directive "rewrite"错误,需排查是否误禁用该模块或PCRE未安装。

Nginx 默认已内置 rewrite 模块(即 ngx_http_rewrite_module),无需额外编译启用——只要不是极简定制版,它始终可用。
确认 rewrite 模块是否已启用
执行以下命令检查模块列表:
nginx -V 2>&1 | grep -o with-http_rewrite_module
若输出 with-http_rewrite_module,说明该模块已在编译时启用(标准发行版和源码默认都包含)。
源码编译时显式启用(非必需,但可明确控制)
如果你从源码编译 Nginx,且想确保 rewrite 模块被包含(例如你之前禁用了某些模块),在 ./configure 阶段无需额外参数——它默认开启。但你可以显式加上:
-
--with-http_rewrite_module(显式启用,等同于默认行为) - 注意:不要用
--without-http_rewrite_module,否则会禁用重写功能(导致if、rewrite、return等指令不可用)
常见问题排查
如果配置中使用 rewrite 或 if 报错(如 unknown directive "rewrite"):
- 检查是否误用了
--without-http_rewrite_module - 确认运行的 Nginx 是你刚编译的版本(而非系统包管理器安装的旧版):
which nginx和nginx -V要一致 - 部分精简版第三方构建(如某些 Alpine 小镜像)可能裁剪了该模块,建议优先使用官方预编译包或完整源码编译
rewrite 模块依赖 PCRE
该模块依赖 PCRE 库(用于正则匹配)。编译时若提示 PCRE 相关错误:
- Debian/Ubuntu:安装
libpcre3-dev - RHEL/CentOS:安装
pcre-devel - macOS(Homebrew):安装
pcre2(Nginx 1.21.0+ 推荐)或pcre - configure 会自动检测;如需指定路径,可用
--with-pcre=DIR或--with-pcre-jit启用 JIT 加速


















