【问题标题】:url rewrite using Nginx in front of an apache在 apache 前使用 Nginx 重写 url
【发布时间】:2014-05-29 19:25:12
【问题描述】:

我试图弄清楚如何在 apache 前使用 nginx 重写 url。 我是这样设置的新手,经过广泛的研究后我无法弄清楚。

我正在尝试在 prestashop 1.6.0.6 安装中启用 seo 友好的 url,但没有任何运气。事实上,当只使用 apache 作为 Web 服务器时,这真的很简单。

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 您当前的配置是什么样的?您是在尝试在 Nginx 访问 Apache 之前重写其内部的 URL,还是只是将 Nginx 代理到 Apache?为了简单和减少内存,您可以考虑只运行 Nginx 并直接与 Prestashop 安装对话。
  • 感谢您的回复。我在vps上,使用ubuntu。现在实际上我正在将 nginx 代理到 apache,但我不确定 nginx 是否是问题所在。所以你的建议是只使用 nginx,但是我将无法使用自动生成的 .htaccess 和 url 重写。正如我在第一篇文章中提到的,我是 nginx 的新手。谢谢你的时间。

标签: apache nginx url-rewriting friendly-url prestashop-1.6


【解决方案1】:

这是否有效取决于您的 Apache 服务器如何配置为接受 URL。如果 Apache 配置为(如您在 .htacess 文件中提到的那样)服务于主机名的根目录,则可能不需要重写。像这样的 Nginx 服务器块示例:

server {
    server_name nginx.example.org;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://apache.example.org:80 break;
    }
}

将从 Nginx 访问的确切主机和路径传递给 Apache,而不进行任何更改。但是,server_nameproxy_pass 指令需要针对您的本地配置进行更改。在这种情况下,由于使用了location / {},所有路径都被接受和代理。

只要后端 Apache 配置正确并且可以从 Nginx 访问,这应该可以工作。最好的测试是确保您可以首先直接访问 Apache 上的资源,尤其是那些具有对 SEO 友好的 URL 的资源,这表明 .htaccess 文件正在工作并生效。然后按照上面的方法在前面配置好Nginx。

至于可能仅使用 Nginx,您可以将规则从 .htaccess 移植到 Nginx 配置中的 rewrite 指令中。根据我的经验,这些规则在功能和结构上非常相似:

Apache:   RewriteRule ^/(.*\.jpg)$ /images/$1 [L] 
Nginx:    rewrite ^/(.*\.jpg)$ /images/$1 last;

更多信息请访问Nginx wiki

【讨论】:

  • 非常感谢您提供的有用信息。我会尝试你的建议,我会及时通知你结果。再次感谢。
猜你喜欢
  • 2011-10-13
  • 2012-03-26
  • 2020-05-26
  • 2015-10-29
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
相关资源
最近更新 更多