我正在尝试为我的 error_page 创建一个后备。基本上,逻辑应该如下所示:
- 加载 foobar.html
- 远程服务器上不存在 -> 从远程服务器加载 404.html 以显示 404 页面
- 远程服务器上不存在 -> 在本地文件系统上加载 404.html
加载两者localhost/404.html
并localhost/global404.html
正常工作,但是当我中断localhost/404.html
(通过从 http 服务器中删除文件)时,它不会global404.html
像我期望的那样显示页面。
server {
listen 80;
server_name example.com www.example.com;
proxy_intercept_errors on;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
error_page 404 /404.html;
}
location /404.html {
proxy_pass http://localhost:3000/404.html;
error_page 404 /global404.html;
}
location /global404.html {
root /usr/share/nginx/html;
}
}
当我点击时,上面的工作正常http://localhost/404.html
(当 404.html 文件位于远程服务器上时,它显示,当我删除文件时,它会加载 global404.html 文件)。
但是,当我键入一个不存在的页面时,我只会得到默认的 nginx 404 页面。
由于对该问题留下的评论措辞,我设法找到了
recursive_error_pages
允许 cascading/recursive 的选项error_pages
。我觉得在文档中遗漏了它很愚蠢。但是,简单地做
发挥了魅力。我喜欢 nginx。