0

我有同一个服务器IP地址的多个A记录,我的意思是:

URL DNS 资源。
goodurl.com 10.0.0.1
badurl1.com 10.0.0.1
badurl2.com 10.0.0.1

我想配置 Apache2 使其仅适用于 URL goodurl.com 而不适用于任何其他 URL。

我找到了在特定 URL“badurl1.com”上提供“拒绝访问”的方法,如下所示:

<VirtualHost *:80>
    ServerName badurl1.com
    DocumentRoot /var/www
    <Directory /var/www/>
            AllowOverride None
            Order deny,allow
            deny from all
    </Directory>
</VirtualHost>

有没有更优雅、更有效的方法来做同样的事情?

有没有办法配置 Apache 以确保默认情况下拒绝任何其他未来和不需要的新 A 记录?

在此先感谢您的帮助

系统 SO:Linux 2.6.32-5-amd64 x86_64 GNU/Linux
服务器版本:Apache/2.2.16 (Debian)
4

2 回答 2

2

一位朋友建议我将其添加到配置文件的底部。它按我的预期工作。

诀窍是创建一个(伪)随机 ServerName 并给出一个“*”作为 ServerAlias。

这样,它与我在顶部配置的 ServerName 和 ServerAlias 的正确配置相匹配,并为指向我的 IP 的所有其他 URL 回退到“失败”目录(没有访问权限)。

lupo@pippo:/var/www# mkdir fail
lupo@pippo:/var/www# chmod -R 000 fail

<VirtualHost *:80>
    ServerName goodurl.com
    ServerAlias     www.goodurl.com goodurl
........
........
</VirtualHost>

<VirtualHost *:80>
    ServerName  lkfjLKJfiu90FJIDSNMFLKSDFMLKSDJNFLKSDFHIDOFH89DFY89NNS
    ServerAlias *
    DocumentRoot /var/www/fail
    <Directory /var/www/fail/>
            AllowOverride None
            Order deny,allow
            deny from all
    </Directory>


</VirtualHost>
于 2015-03-06T11:05:18.997 回答
0

您应该使用动态虚拟主机。本质上,路径名称将包含虚拟主机服务器名称,因此如果路径不存在,服务器将返回文件未找到。

<VirtualHost 111.22.33.44>
    ServerName                 customer-1.example.com
    DocumentRoot        /www/hosts/customer-1.example.com/docs
    ScriptAlias  /cgi-bin/  /www/hosts/customer-1.example.com/cgi-bin
</VirtualHost>

<VirtualHost 111.22.33.44>
    ServerName                 customer-2.example.com
    DocumentRoot        /www/hosts/customer-2.example.com/docs
    ScriptAlias  /cgi-bin/  /www/hosts/customer-2.example.com/cgi-bin
</VirtualHost>

<VirtualHost 111.22.33.44>
    ServerName                 customer-N.example.com
    DocumentRoot        /www/hosts/customer-N.example.com/docs
    ScriptAlias  /cgi-bin/  /www/hosts/customer-N.example.com/cgi-bin
</VirtualHost>

变成

# get the server name from the Host: header
UseCanonicalName Off

# this log format can be split per-virtual-host based on the first field
# using the split-logfile utility.
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon

# include the server name in the filenames used to satisfy requests
VirtualDocumentRoot /www/hosts/%0/docs
VirtualScriptAlias  /www/hosts/%0/cgi-bin

http://httpd.apache.org/docs/current/vhosts/mass.html

于 2015-03-05T15:39:22.127 回答