How*_*ard 7 http nginx httpresponse http-status-code-404
我总是在nginx配置中使用"return 444"来阻止通过IP或错误的主机名直接访问我的服务器的爬虫.它只是关闭连接.完善.
现在我想使用此响应而不是nginx抛出的标准404.html页面,但我在配置时失败.
error_page 500 502 503 504 /custom_50x.html;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我不能像这里"返回444":
server {
listen 80;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
有人知道将这两者结合起来的方法吗?
提前致谢!
重定向请求然后您可以轻松返回状态代码
server {
error_page 500 502 503 504 =444 @blackhole;
location @blackhole {
return 444;
}
}
Run Code Online (Sandbox Code Playgroud)
只是想补充一点,@blackhole当某些奇怪的请求发送到服务器时,使用命名位置会引发 Nginx 默认的 500 错误页面(更多详细信息请参见此处),因此未实现所需的结果(444)。
我通过使用以下符号来解决这个问题:
\n\nerror_page 301 400 403 404 500 502 503 504 =444 /444.html;\nlocation = /444.html {\n return 444;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n更新:请注意,如果上述块本身位于块内location,则位置路径location = /444.html {\xe2\x80\xa6在重新加载时可能会提示 Nginx 错误,因为 Nginx 要求它是父块的子位置location--> 例如:location = [sub-location]/444.html {\xe2\x80\xa6。