ubuntu – Nginx默认页面的自定义状态代码

前端之家收集整理的这篇文章主要介绍了ubuntu – Nginx默认页面的自定义状态代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我只有Nginx的上游经验,而不是静态文件的服务.

Nginx有一个默认服务器,它服务于欢迎使用Nginx页面,并在虚拟主机上没有匹配时显示.我想保留此默认页面,但将200状态代码覆盖为404.

我不知道该如何解决这个问题.有任何想法吗?

最佳答案
您可以使用返回包含错误代码页面

error_page 404 /index.html;

只要root在服务器块中定义为Nginx的默认路径. Nginx.org在所有这些上都有extensive documentation,值得一试.

重写200

很危险但是,您可以使用return来响应服务器中任何其他位置的请求,这将正确调用error_page指令.如果将它放在服务器块的底部,它将作为未在其他地方指定的请求的全能:

location / {
    return 404;
}

Here是退货的文件.

要真正迂腐,你也可以省略error_page指令,而只是编写重定向URL(对于代码301,302,303,307和308,从版本0.8.42开始):

location / { 
    root /path/to/www/Nginx;
    return 301 /index.html;
}

或者响应正文(对于其他代码):

location / { 
    root /path/to/www/Nginx;
    return 404 '404 error';
}

…但如果出现任何问题,这可能很难排除故障.

一点点阐述

Nginx有一个相当简单的语法来分隔状态代码页面.在服务器块中,您可以定义一个根,其中Nginx将查找所请求的静态页面.当请求静态页面但未找到,或者无法读取或发生其他情况时,Nginx获取状态代码并执行操作.如果该代码是200,它会处理html,PHP或其他任何内容,它们可以(并且经常会)触发对文件系统或其他套接字的一系列请求,以提供页面的这一部分或那部分.成功的结果将发送到浏览客户端,如果失败,将返回错误的默认页面.在这两种情况下,也会返回状态代码(允许浏览器端自定义404和其他错误).

error_page指令只是告诉Nginx接下来要遵循的请求.实际上,此请求甚至不必是磁盘上的文件.它可以是具有自己的规则集的命名位置. Nginx的默认配置很好地说明了这一点:

error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/Nginx/www;
}

因此,在获得503时,Nginx将请求/50x.html,并且对50x.html的任何请求的位置语句定义了查找此文件的根路径.

猜你在找的Nginx相关文章