HTTP 444 (No Response) instead of 404, 403 error pages?

∥☆過路亽.° 提交于 2020-01-14 07:46:10

问题


I always use "return 444" in the nginx config to stop crawlers that access my servers directly via IP or via the wrong hostname. It just closes the connection. Perfect.

Now i want to use this response instead of the standard 404.html pages that nginx throws but i fail at configuring.

    error_page 500 502 503 504 /custom_50x.html;

This works fine, but i cant "return 444" like here:

    server {
    listen      80;
    server_name "";
    return      444;
}

Does anybody know a way to combine these two?

Thanks in advance!


回答1:


Redirect request then you can return status code easily

server {
error_page 500 502 503 504 =444 @blackhole;

  location @blackhole {
    return 444;
  }
}



回答2:


Just wanted to add that using @blackhole named location raised Nginx's default 500 error page when certain weird requests were sent to the server (more details here), and thus the desired result (444) was not achieved.

I went around this by using the following notation instead:

error_page 301 400 403 404 500 502 503 504 =444 /444.html;
location = /444.html {
        return 444;
}

Update: note that if the above block is itself inside a location block, the location path location = /444.html {… may prompt an Nginx error upon reload because Nginx requires it be a sub-location of the parent location block --> such as: location = [sub-location]/444.html {….



来源:https://stackoverflow.com/questions/41421111/http-444-no-response-instead-of-404-403-error-pages

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!