![避免在 Apache 2.4 中基于公共 IP 浏览网站](https://linux22.com/image/161931/%E9%81%BF%E5%85%8D%E5%9C%A8%20Apache%202.4%20%E4%B8%AD%E5%9F%BA%E4%BA%8E%E5%85%AC%E5%85%B1%20IP%20%E6%B5%8F%E8%A7%88%E7%BD%91%E7%AB%99.png)
我们在本地托管一个网站。为此,我们有一个公共 IP 和相应的 DNS 条目。我们正在使用 Apache 2.4 网络服务器。该网站可以公开访问,没有任何问题。但网站也可以通过证明公共IP来评估。
如何避免基于 IP 的公共访问我的网站?我应该更新 Apache(虚拟主机)配置还是应该在哪里处理它?
我知道如何限制 Apache 中的客户端(IP),但我的情况完全不同。
更新:例如,https://www.contoso.com/应该可以,但是https://203.0.113.66/不应该。这就是我要的
答案1
您需要在 apache 配置中定义默认虚拟主机。之后,使用您希望在其上找到网站的 DNS 名称的 ServerName 定义一个虚拟主机。
现在,主机标头中具有该名称的请求将由该虚拟主机处理,任何其他请求(主机名错误或没有主机名)将由默认虚拟主机处理(这可能只是一个页面,表明使用了错误的主机) ,或类似)。
如果正在使用 SSL (https),则对 IP 地址的请求无论如何都会收到 SSL 错误,因为主机名(在本例中为 IP 地址)与 SSL 证书中的主机名不匹配。
答案2
使用 Ubuntu 18.04、Apache 2.4.29。
我认为 apache2 ie 中有一个默认的 vHost 000-default.conf
。如果您的站点可通过 IP 访问,则您可能已禁用此默认配置。
解决方法:
编辑000-default.conf
并在那里放置一个重定向。
nano /etc/apache2/sites-available/000-default.conf
在000-default.conf
<VirtualHost *:80> Redirect / https://www.contoso.com/ </VirtualHost> <VirtualHost *:443> Redirect / https://www.contoso.com/ </VirtualHost>
如果需要,启用配置。
a2ensite 000-default.conf
重新加载 Apache2。
systemctl reload apache2.service
希望能帮助到你。