【问题标题】:Cloning default nginx 404 page? [closed]克隆默认 nginx 404 页面? [关闭]
【发布时间】:2012-02-10 14:42:51
【问题描述】:

我在一个网站上工作,如果用户没有经过身份验证或者没有权限查看指定的页面,我想抛出标准的 404 页面。我做了一些寻找,但没有运气。显然我可以只复制 HTML,但我宁愿不这样做。如果可能的话,我宁愿使用 nginx 使用的实际 404 页面。

我在哪里可以找到这个?

【问题讨论】:

  • 我不明白你为什么不想复制 HTML。如果不是 HTML,您希望找到什么?
  • @KyleJones,我只是觉得这是一种半途而废的方式。
  • 我猜你要求的是某种方式让 nginx 显示 404 页面并 发回 HTTP 404 代码,这不清楚从你的问题给我。
  • @KyleJones,好吧,虽然我确信使用 header() 和 HTML 相对简单。

标签: nginx http-status-code-404


【解决方案1】:

运行nginx -V 并查找--prefix=/prefix/path/to/nginx 定义的路径。

你会在/prefix/path/to/nginx/html下找到默认的404文件404.html

当您想要自定义错误页面时,编辑默认文件的更好方法是在 http 部分下的 nginx.conf 文件中添加这样的块

error_page 400 /error_docs/400_bad_request.html;
error_page 401 /error_docs/401_unauthorized.html;
error_page 403 /error_docs/403_forbidden.html;
error_page 404 /error_docs/404_not_found.html;
error_page 405 /error_docs/405_method_not_allowed.html;
error_page 406 /error_docs/406_not_acceptable.html;
error_page 407 /error_docs/407_proxy_authentication_required.html;
error_page 412 /error_docs/412_precondition_failed.html;
error_page 415 /error_docs/415_unsupported_media_type.html;
error_page 500 /error_docs/500_internal_server_error.html;
error_page 501 /error_docs/501_not_implemented.html;
error_page 502 /error_docs/502_bad_gateway.html;
error_page 504 /error_docs/504_gateway_timeout.html;

这基本上说如果生成 404 错误,请使用 /error_docs/404_not_found.html。您显然定义了要为其制作特定自定义页面的那些

然后,您可以将 404_not_found.html 文件保存在服务器上的某个位置,例如 /prefix/path/to/nginx/errors,然后在每个服务器部分下添加类似

的内容
server {

    ...

    location /error_docs {
        internal;
        alias /prefix/path/to/nginx/errors;
    }

    ...

}

只要抛出任何先前定义的错误代码,就会提供预定义的自定义页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2017-07-18
    • 1970-01-01
    • 2011-04-11
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多