nginx:完全禁用 SSL 端口的 HTTP 响应

nginx:完全禁用 SSL 端口的 HTTP 响应

我有一个使用 nginx 的私有 HTTPS 服务器。因此,我不在乎浏览器兼容性,也不在乎 HTTP 到 HTTPS 重定向;我只希望它在我的环境中工作,而不在其他地方工作。我已经用“listen 17648 ssl;”对其进行了配置。每当我尝试使用纯 HTTP 连接到它时,我都会收到臭名昭著的“纯 HTTP 请求已发送到 HTTPS 端口”响应。

当 HTTP 请求发送到 HTTPS 端口时,有什么方法可以阻止 nginx 发送任何响应?如果请求不是 SSL,我希望 nginx 简单地关闭连接,或者可能返回一些 SSL 级别的错误,但根本不返回普通的 HTTP 响应,甚至没有错误响应。

答案1

来自 Nginx 文档返回条款:

非标准代码 444 关闭连接而不发送响应头。

因此,我尝试捕获错误 497“HTTP 到 HTTPS”,并尝试以这种方式返回 444:

error_page 497 =444 @close;

location @close {
   return 444;
}

不幸的是,这导致了“待定”状态,因为漏洞

使用开发人员提出的解决方法似乎有效:

error_page 497 =444 @close;

location @close {
   return 0;
}

尝试一下这是否符合您的需求!

相关内容