使Apache服务器只接受域而不是IP请求

ant*_*iks 9 centos apache-2.2

我有一台运行 Apache 2.2.15 的 CentOS 服务器。如果服务器的 IP 地址是 198.51.100.4 并且我在浏览器中写入http://198.51.100.4它会在我的网站上。

我想防止这种情况。我希望我的网站只能在 FQDN 上访问,即http://example.com/

如何配置我的服务器,以便在访问 IP 地址时无法访问该网站?

wur*_*tel 11

你可以添加一个默认的虚拟主机,它只会给出一个“拒绝”的错误,或者其他什么。当浏览器访问您的网络服务器时,URL 中没有主机且与其他虚拟主机中的任何ServerNameServerAlias行匹配的主机将由默认虚拟主机提供服务。

所以在你的 apache 配置中:

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)


Fro*_*giz 7

Alias *除了虚拟主机中允许的流量外,您还可以使用它来捕获任何其他流量,为此您必须在最后一个位置使用具有*别名的虚拟主机。

就像那样,只会提供定义的域。

<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>

<VirtualHost *:80>
ServerName another.mywebsite.com
DocumentRoot /var/www/another
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在我的示例中,只允许 mywebsite.com 和 another.mywebsite.com,所有其他域或 IP 都将取消流量。

要取消流量,您可以使用重定向到-然后添加错误代码,例如我使用 RewriteRule 重定向到406 Not Acceptable ( R=406)。

在这里您可以找到重定向代码列表:https : //fr.wikipedia.org/wiki/Liste_des_codes_HTTP