首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx不遵守子文件夹error_page指令

nginx不遵守子文件夹error_page指令
EN

Stack Overflow用户
提问于 2020-12-22 13:50:45
回答 1查看 173关注 0票数 1

我试图使我的非常简单的nginx服务静态文件回退,或者以其他方式显示错误页面,如果是404或50x错误,如下所示:

代码语言:javascript
复制
server {
  listen 80;
  server_name frontend;
  add_header X-Frame-Options "SAMEORIGIN";

  error_page 404 = @fallback404;
  location @fallback404 {
    index index.html;
    root /usr/share/nginx/html/404-error;
    internal;
  }

  error_page 500 502 503 504 @fallback5xx;
  location @fallback5xx {
    index index.html;
    root /usr/share/nginx/html/5xx-errors;
  }

  location /testing500 {
    fastcgi_pass unix:/does/not/exist;
  }

  location / {
    autoindex off;
    index index.html;
    root /usr/share/nginx/html;
    try_files $uri $uri/ =404;
  }
}

甚至/testing/500也会返回plan的404页:

我还试图将error_page指令声明为它们各自子文件夹的位置,其中实际存在有错误的index.html,在我的示例中:/404-error/index.html/5xx-errors/index.html没有使用@fallbackXXX定义,效果是一样的。

我错过了什么?是否nginx不尊重错误页在子文件夹或其他什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-22 15:44:25

您需要向try_files块添加一个location @fallback404语句,以选择要返回的正确URI。

例如:

代码语言:javascript
复制
error_page 404 = @fallback404;
location @fallback404 {
    root /usr/share/nginx/html/404-error;
    try_files /index.html =404;
    internal;
}

但是,一个更简单的解决方案是在error_page语句本身中指定URI。

例如:

代码语言:javascript
复制
error_page 404 /404-error/index.html;
location = /404-error/index.html {
    root /usr/share/nginx/html;
    internal;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65409861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档