降低家用 Web 服务被通报的概率
- 通过明文协议尝试请求 HTTPS 服务在 Nginx 中有分配特殊的 497 状态码。如果发生该报错,我们希望 Nginx 直接关闭连接,不返回任何响应。这需要用到另外一个非标状态码 444,综合两种状态码,我们需要在 server 中增加如下配置:
error_page 497 @close;
location @close {
return 444;
}
使用error_page指令为497状态码设置虚拟路径@close,Nginx在处理的@close时发现是返回444状态码,于是直接关闭连接。
这个时候你再用 curl 访问对应的端口就会收到如下报错:
curl http://example.zz.ac:5678 curl: (52) Empty reply from server
server {
listen 5678 ssl;
listen [::]:5678 ssl;
server_name example.zz.ac;
ssl_certificate ...;
ssl_certificate_key ..;
error_page 497 @close;
location @close {
return 444;
}
...
}
server {
listen 5678 ssl default_server;;
listen [::]:5678 ssl default_server;;
server_name _;
ssl_certificate ...;
ssl_certificate_key ..;
return 444;
}
