克隆默认的nginx 404页面?

时间:2012-01-15 01:02:29

标签: nginx http-status-code-404

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

我在哪里可以找到这个?

1 个答案:

答案 0 :(得分:3)

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

您会在404.html

下找到/prefix/path/to/nginx/html的默认404文件

当您需要自定义错误页面时,编辑默认文件的更好方法是将这样的块添加到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;
    }

    ...

}

每当抛出任何先前定义的错误代码时,将提供预定义的自定义页面。