我希望 nginx 首先在我的本地主机上搜索文件,如果出现 404 错误,它应该搜索服务器 1.1.1.1。
我能够获取位于本地主机上的文件,但无法从服务器 1.1.1.1 获取。
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log main;
location /products/ {
proxy_next_upstream http_404;
root /var/foo;
}
}
server {
listen 80;
server_name 1.1.1.1;
location /products/ {
#########
}
}
我猜 proxy_next_upstream 没有切换到服务器。
对此的任何帮助将不胜感激。
最佳答案
proxy_next_upstream指令是一个配置指令,用于控制来自一组 upstream servers 的重新请求来自 proxy_pass
如果对其中之一的请求失败。没有 proxy_pass
就没有意义和一个 upstream
块定义。如果您像这样代理到多个上游服务器,则可以使用它:
upstream backends {
server 192.2.0.1;
server 192.2.0.2;
...
}
server {
...
location / {
proxy_pass http://backends;
proxy_next_upstream error timeout http_404;
}
}
如果您希望 nginx 搜索磁盘上的文件,并且未找到 - 向另一台服务器的代理请求,请配置它,例如使用
try_files
回退代替:location / {
root /path/to/root;
try_files $uri @fallback;
}
location @fallback {
proxy_pass http://...
}
见 http://nginx.org/r/try_files有关
try_files
的更多信息指示。
关于Nginx proxy_next_upstream 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868683/