避免在 Apache 2.4 中基于公共 IP 浏览网站

避免在 Apache 2.4 中基于公共 IP 浏览网站

我们在本地托管一个网站。为此,我们有一个公共 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

希望能帮助到你。

相关内容