我试图弄清楚如何在 apache 前面使用 nginx 重写 url。我对这样的设置很陌生,经过广泛的研究,我无法弄清楚。
我正在尝试在 prestashop 1.6.0.6 安装中启用 seo 友好的 url,但没有任何运气。事实是,当只使用 apache 作为 Web 服务器时,这真的很简单。
如果有人可以帮助我,我将不胜感激。
我试图弄清楚如何在 apache 前面使用 nginx 重写 url。我对这样的设置很陌生,经过广泛的研究,我无法弄清楚。
我正在尝试在 prestashop 1.6.0.6 安装中启用 seo 友好的 url,但没有任何运气。事实是,当只使用 apache 作为 Web 服务器时,这真的很简单。
如果有人可以帮助我,我将不胜感激。
这是否有效取决于您的 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_name
and指令。proxy_pass
在这种情况下,由于使用location / {}
,所有路径都被接受和代理。
只要后端 Apache 配置正确并且可以从 Nginx 访问,这应该可以工作。最好的测试是确保您可以首先直接访问 Apache 上的资源,尤其是那些具有对 SEO 友好的 URL 的资源,这表明该.htaccess
文件正在工作并生效。然后按照上面配置前面的Nginx。
至于可能只使用 Nginx,您可以将规则从.htaccess
over 移植到rewrite
Nginx 配置中的指令中。根据我的经验,这些规则在功能和结构上非常相似:
Apache: RewriteRule ^/(.*\.jpg)$ /images/$1 [L]
Nginx: rewrite ^/(.*\.jpg)$ /images/$1 last;
更多信息在Nginx wiki上。