我在端口 80 上运行一个带有 nginx 的服务器,在 8080 端口上运行 Apache。我希望我的站点的主页由 nginx 提供服务,并且所有其他请求都传递给 Apache。我找到了这篇很棒的文章并理解了 nginxproxy_pass
指令,但我想不出正确的正则表达式来告诉 nginx 只为我网站的主页提供服务。由于用户将通过访问http://mysite.com
(不访问/index.htm
)来访问该站点,因此我不知道应该使用什么“位置”值。
这是一个示例配置文件,演示了如何将所有页面发送到 Apache(如我所愿),/css
文件夹和图像文件除外。如您所见,nginx 使用一个简单的正则表达式来指定 nginx 应提供的服务。我将使用什么正则表达式来指定只有主页应该由 nginx 提供服务?或者我应该以try_files
某种方式使用?
server {
root /usr/local/www/mydomain.com;
server_name mydomain.com www.mydomain.com;
# next line says anything that matches this regex should be sent to Apache
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
# Apache is listening on port 8080
proxy_pass http://127.0.0.1:8080;
}
# Example 1 - Specify a folder and its contents
# To serve everything under /css from nginx only
location /css { }
# Example 2 - Specify a RegEx pattern such as file extensions
# to serve only image files directly from Nginx
location ~* ^.+\.(jpg|jpeg|gif|png)$
{
# this will match any file of the above extensions
}
}
好的,所以你真正需要做的是:
index.html
在文档根目录中。因此,nginx 将直接为其提供服务。删除它以返回到以前的行为。您的配置应如下所示:
稍后你应该看看在你的网络应用程序中做缓存;如果它将生成的 HTML 文件写入磁盘,您可以让 nginx 直接从其缓存中提供这些文件。