为了提高性能,我们希望允许 nginx 在将 404 错误传递给上游 apache 服务器之前捕获它。两个服务器都有相同的文件。
更多信息
我们有一个流行的设置,即在 nginx 上提供静态内容,并使用 apache 上游提供动态内容。我们目前将 php 和静态文件从上游 apache 节点同步到 nginx 节点。相同的文件位于两个层上。我们只是从 nginx 提供静态文件。
目前,所有非静态请求都会向上游发送到 Apache 服务器(如先前所预期的那样)。但是,我意识到 nginx 应该能够在决定将 .php 文件传递到上游之前检查该文件是否存在。这意味着可以更有效地处理请求。
我一直在尝试使用 try_files 组合,然后最终使用 if 块来寻找解决方案,但尚未成功。请提供意见。
谢谢!
答案1
有一个非常简单的解决方案:
server {
listen 0.0.0.0;
server_name fooo.org;
access_log /var/log/nginx/access.log main;
root /var/www/fooo.org;
location / {
# If the file exists as a static file serve it directly without
# running all the other rewite tests on it
if (-f $request_filename) {
break;
}
proxy_pass http://127.0.0.1:8080;
}
}
如果有帮助请+1;)谢谢