拒绝 Apache 2 中其他域的请求

拒绝 Apache 2 中其他域的请求

假设我在由 Apache 驱动的服务器上运行 xy.com。它是默认虚拟主机。
现在有人重写了他的主机文件,将 yz.com 重定向到我的服务器的 IP。由于我的服务器对 yz.com 一无所知,它只是将其解析为默认虚拟主机。因此在这种情况下,yz.com/hello 被解析为 xy.com/hello,并尝试为我的站点的 /hello 页面提供服务。有没有办法(也许使用 RewriteRule 或其他东西)禁用从我的服务器请求 yz.com 的请求?例如给他们一个 403 或其他任何东西,除非它请求 xy.com,否则不要让任何东西通过 Apache。
我在 Ubuntu LTS 上使用最新的 Apache 版本。

答案1

如果您不想将 xy.com 作为默认值,那为什么还要将其作为默认值呢?

添加一个新的默认虚拟主机,它不执行任何操作,只返回 404。

然后添加 xy.com 作为虚拟主机条目。它仅在被请求时才会被使用。

答案2

为什么不简单地将默认 VHost 更改为拒绝 VHost?

<VirtualHost *:80>
    ServerName lol.no
    DocumentRoot /var/empty/httpd
    <Location />
        Deny from all
        Allow from none
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ...your VHost goes here...
</VirtualHost>

答案3

RewriteRule 可能是这样的:

RewriteCond %{HTTP_HOST} !^your\.site\.com$ [NC]
RewriteRule .* - [F]

另一个解决方案是添加一个新的默认虚拟主机,该主机对所有请求都以 403 响应。
只有匹配的请求才会转到您的真实虚拟主机。

相关内容