加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx – 阻止通过HTTPS直接访问Web服务器IP

发布时间:2020-12-13 21:25:43 所属栏目:Nginx 来源:网络整理
导读:与this和this question类似,我想阻止用户使用IP访问我的服务器. 对于HTTP(端口80),这可以正常工作,但不适用于HTTPS.因此,用户仍然可以输入https:// 访问网络服务器和nginx返回默认证书. 顺便说一句,我在我的“通常”服务器块(使用我的域名)中使用HTTP2,所以

与this和this question类似,我想阻止用户使用IP访问我的服务器.

对于HTTP(端口80),这可以正常工作,但不适用于HTTPS.因此,用户仍然可以输入https://< myip>访问网络服务器和nginx返回默认证书.
顺便说一句,我在我的“通常”服务器块(使用我的域名)中使用HTTP2,所以我使用:

listen 443 ssl http2;
listen [::]:443 ssl http2;

我试过这个来阻止HTTPS ip访问:

server {
   listen 443 ssl;
   listen [::]:443 ssl;

   server_name _;
   return 444;
}

但遗憾的是,无论是否使用域,都会阻止所有HTTPS请求.
我知道可能有必要阻止非SNI客户端,因为这些客户当然不会将使用过的域名提供给服务器,所以我很好. (我的意思是不支持SNI的客户不管怎样……)

我通常更喜欢在nginx中阻止它,但是如果你有一些关于在防火墙级别阻止它的想法(iptables)我也很高兴地欣赏它们.如果你想争论为什么阻止使用iptables更好,你也可以这样做并说服我也阻止HTTP [或所有其他]对IP的请求.
通常丢弃连接很好(如nginx状态代码444那样).

但是有一个要求:我不想在配置中明确提到服务器的IP地址,因为它是动态IP,服务器使用动态DNS服务.

简而言之,这就是我想要实现的目标:

>通过IP阻止访问
>允许通过域名访问
>可以阻止非SNI客户端
>可以使用防火墙阻止它
>放下连接就好了
>没有提到服务器的IP地址
>不通过HTTPS暴露域名

编辑:另一个失败的尝试.
我试着按照this suggestion使用这个配置片段,从逻辑上讲这似乎是一件好事:

if ($host != "example.com") {
        return 444;
}

它基本上也可以工作,但是当我访问“https://”时,我发现nginx最初已经发送了HTTPS证书(包含域名),并且只有当我跳过连接警告时,才会看到它阻止了访问.这是合乎逻辑的,因为当HTTPS连接存在时,nginx只能读取Host头,但此时nginx已经发送了包含域名的服务器证书,因此用户现在拥有域名并可以使用它重新连接制作整个IP阻止无用.
我也有点担心这个解决方案的性能方面,因为它会导致nginx检查每个请求的主机头,所以我仍然在寻找解决方案.

最佳答案
今天,我遇到了与此块相同的问题:

server {
  listen 443 ssl default_server;
  server_name 

nginx-logs说:

no “ssl_certificate” is defined in server listening on SSL port while
SSL handshaking

正如您所提到的,这似乎也禁用了其他服务器块.可以通过使用server-ip-address的(自签名)证书来解决这个问题.我用openssl做了这个:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt -subj '/CN=

然后将服务器块更改为:

server {
    listen 443 ssl default_server;
    server_name 

当有人使用https上的SERVER-IP访问服务器时,nginx会显示(自签名)证书,而不是您要隐藏的域名证书.

顺便说一下,让你的服务器块与IP一起使用default_server.这样,禁用SNI的客户端将获得IP证书而不是域名证书.这也可以用openssl测试(-servername选项,它将启用SNI,省略):

openssl s_client -connect 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读