如何使用 Apache 阻止域?

How to block Domain with Apache?

我们在 Digital Ocean 上有一个网站 example.com。似乎有一个用户曾经使用我们的 IP 地址为他们的站点启用了域屏蔽,或者他们只是将他们的域 domain.com 指向我们的 sute。我们不想 domain.com 显示我们的网站,所以我想阻止 domain.com。

我尝试使用本指南: https://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/ ,但这似乎不适用于域屏蔽。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?domain(-|.).*$  [NC]
    RewriteRule ^(.*)$ - [F,L]
</IfModule>

我看到了这个例子:https://serverfault.com/questions/796674/block-masking-url-from-nginx/ ,但我不知道如何将其转换为 Apache。

@arkascha 建议我使用 Apache 的虚拟主机来完成这项工作。

我们的想法是让您的默认主机拒绝访问,然后添加另一个允许访问您的域的虚拟主机。这意味着没有黑名单,而是白名单。这可以防止未来或未知域引起类似问题。

这是我的 etc/apache2/sites-available/000-default.conf 的内容,它成功阻止了来自 domain.com 的流量,并允许来自 example.com 的流量:

<VirtualHost *:80>
    ServerName catchall
    <Location />
        Require all denied
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/public

        <Directory /var/www/html/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>