nginx – 阻止通过HTTPS直接访问Web服务器IP
与this和this question类似,我想阻止用户使用IP访问我的服务器. 对于HTTP(端口80),这可以正常工作,但不适用于HTTPS.因此,用户仍然可以输入https://< myip>访问网络服务器和nginx返回默认证书.
我试过这个来阻止HTTPS ip访问:
但遗憾的是,无论是否使用域,都会阻止所有HTTPS请求. 我通常更喜欢在nginx中阻止它,但是如果你有一些关于在防火墙级别阻止它的想法(iptables)我也很高兴地欣赏它们.如果你想争论为什么阻止使用iptables更好,你也可以这样做并说服我也阻止HTTP [或所有其他]对IP的请求. 但是有一个要求:我不想在配置中明确提到服务器的IP地址,因为它是动态IP,服务器使用动态DNS服务. 简而言之,这就是我想要实现的目标: >通过IP阻止访问 编辑:另一个失败的尝试.
它基本上也可以工作,但是当我访问“https://”时,我发现nginx最初已经发送了HTTPS证书(包含域名),并且只有当我跳过连接警告时,才会看到它阻止了访问.这是合乎逻辑的,因为当HTTPS连接存在时,nginx只能读取Host头,但此时nginx已经发送了包含域名的服务器证书,因此用户现在拥有域名并可以使用它重新连接制作整个IP阻止无用. 最佳答案
今天,我遇到了与此块相同的问题:
nginx-logs说:
正如您所提到的,这似乎也禁用了其他服务器块.可以通过使用server-ip-address的(自签名)证书来解决这个问题.我用openssl做了这个:
然后将服务器块更改为:
当有人使用https上的SERVER-IP访问服务器时,nginx会显示(自签名)证书,而不是您要隐藏的域名证书. 顺便说一下,让你的服务器块与IP一起使用default_server.这样,禁用SNI的客户端将获得IP证书而不是域名证书.这也可以用openssl测试(-servername选项,它将启用SNI,省略):
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |