拒绝接收未知主机名的 HTTP 请求

该文章根据 CC-BY-4.0 协议发表,转载请遵循该协议。
本文地址:https://fenying.net/post/2023/11/07/refuse-unknown-incoming-hostname/

对于一个 HTTP(S) 服务器,如何拒绝一个本机未提供的未知主机名的请求呢?比如有人向你的 HTTP(S) 服务器发送了目标为 www.google.com 的请求,如何拒绝呢?

当你的主机通过 Nginx 对外提供 HTTP(S) 服务时,如果有人通过错误的主机名+你的主机 IP 地址访问,可以通过返回 444 状态码拒绝(强行关闭连接),参考配置如下:

注意

444 是一个非标准的状态码,仅 Nginx 会对其实施这种处理。

 1server {
 2    listen 80 default_server;
 3    listen [::]:80 default_server;
 4
 5    server_tokens off;
 6    return 444;
 7}
 8
 9server {
10
11    listen  443 default_server http2 ssl;
12    listen  [::]:443 default_server http2 ssl;
13
14    server_tokens off;
15    ssl_certificate /etc/ssl.d/fuck-u.crt.pem;
16    ssl_certificate_key /etc/ssl.d/fuck-u.key.pem;
17    return 444;
18}

参考:https://serverfault.com/a/575053

comments powered by Disqus