如何使用Apache阻止域?

如何使用Apache阻止域?,apache,domain-masking,Apache,Domain Masking,我们有一个关于数字海洋的网站example.com。似乎有一个用户曾经使用我们的IP地址为他们的站点启用域屏蔽,或者他们只是将他们的域domain.com指向我们的sute。我们不希望domain.com显示我们的网站,所以我想阻止domain.com 我试着使用这个指南: ,但这似乎不适用于域屏蔽 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} ^http://(www\.)

我们有一个关于数字海洋的网站example.com。似乎有一个用户曾经使用我们的IP地址为他们的站点启用域屏蔽,或者他们只是将他们的域domain.com指向我们的sute。我们不希望domain.com显示我们的网站,所以我想阻止domain.com

我试着使用这个指南: ,但这似乎不适用于域屏蔽

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

重新启动发动机
RewriteCond%{HTTP|u REFERER}^HTTP://(www\.)?*(--124;.)?域(--124;.).$[NC]
重写规则^(.*)$-[F,L]
我看到了这个例子:
,但我不知道如何将其转换为Apache。

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

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

以下是my 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>

服务器名catchall
要求全部拒绝
ServerName example.com
ServerAlias www.example.com
服务器管理员webmaster@example.com
DocumentRoot/var/www/html/public
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合

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

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

以下是my 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>

服务器名catchall
要求全部拒绝
ServerName example.com
ServerAlias www.example.com
服务器管理员webmaster@example.com
DocumentRoot/var/www/html/public
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合

通常的方法不是必须主动管理的黑名单,而是为您的有效主机名(“域”)配置显式主机,并为您可以简单阻止的所有其他内容配置apache的默认主机。@arkascha我该怎么做?您可以在apache http服务器内配置任意“主机”。配置中定义的第一个主机名被视为默认主机名,所有对未定义显式主机的主机名的请求都将由该默认主机提供服务。因此,为要作为第二个主机的服务器的有效主机名定义一个显式主机,并定义一个默认主机,它只会阻止所有请求。我建议您开始阅读文档。它的质量非常好,是典型的开源软件,并且有很好的例子。注意主机的顺序。启动http服务器读取的第一个主机充当默认主机。您还可以通过简单地监视其各自的访问日志文件来检查哪些主机为实际请求提供服务。通常的方法不是必须主动管理的黑名单,而是为您的有效主机名(“域”)配置显式主机以及apache的默认主机,您可以简单地阻止它。@arkascha我该怎么做?您可以在apache http服务器内配置任意“主机”。配置中定义的第一个主机名被视为默认主机名,所有对未定义显式主机的主机名的请求都将由该默认主机提供服务。因此,为要作为第二个主机的服务器的有效主机名定义一个显式主机,并定义一个默认主机,它只会阻止所有请求。我建议您开始阅读文档。它的质量非常好,是典型的开源软件,并且有很好的例子。注意主机的顺序。启动http服务器读取的第一个主机充当默认主机。您还可以通过简单地监视其各自的访问日志文件来检查哪些主机为实际请求提供服务@LucyTurtle如何在端口443上使用https阻止域?此解决方案在端口80而不是443上运行良好。看起来很好,很好,您成功了@LucyTurtle如何在端口443上使用https阻止域?此解决方案在端口80而不是443上运行良好。