如何在 nginx 1.0.5 中启用重写功能?

如何在 nginx 1.0.5 中启用重写功能?

我最近安装了 nginx 1.0.5,其中包含 php fpm、php apc 和 postgres。我只想试用一下 nginx,并学习如何配置基本内容。为了进行扩展测试,我决定安装 PHPBB3(运行良好),看看 PHP + Postgres 访问是否有效。

现在我想了解重写 URL 的工作原理,并且已经发现重写内容应该写在 nginx 配置中的位置部分。

但不幸的是,nginx 似乎忽略了我在配置中设置的每个重写规则。所以我想知道我是否必须先以某种方式打开重写功能?

nginx -V |grep rewrite什么都没显示,而且安装 nginx-extras 也无济于事。我只是希望 nginx-extras 包含类似重写模块的东西,但不幸的是事实并非如此。

搜索 serverfault.com 和 google 均无济于事。那么 - 我该怎么做?:\ 任何帮助都非常感谢。

PS:在 Debian 6 中,所有软件包均使用 apt-get install 安装。

编辑:下面是我的 nginx vhost 配置的摘录:

server {
            listen 80;
            server_name domain.org www.domain.org;

            access_log /var/log/nginx/domain.access_log;
            error_log /var/log/nginx/domain.error_log;
            rewrite_log on;
            events {
                     debug_connection  <my ip>;
            }
[...]

答案1

rewrite模块是内置编译的。我建议你打开它rewrite_log看看会发生什么。

答案2

我按照这里关于如何配置重写规则的说明进行操作,并且它们起作用了,但一开始有点令人困惑:

http://wiki.nginx.org/HttpRewriteModule#rewrite

我强烈建议的一件事是确保您的 nginx 构建具有 debug_connection:

http://wiki.nginx.org/EventsModule#debug_connection

为你的测试 IP 启用此功能,然后发出请求,会将整个 nginx 决策过程转储到错误日志中。这绝对是我在任何 Web 服务器中使用过的最有用的诊断工具。它会告诉你重写规则到底发生了什么,如果它不匹配或规则无效,或者完全跳过。如果 apt-get 不支持 debug_connection,那么值得花点功夫(非常小)来重建它。

相关内容