拒绝接收未知主机名的 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