2015-03-05 13 views
0

я множественным запись для того же IP-адрес сервера, я имею в виду:сила Apache2 реагировать только на 1 конкретный URL, а не какой-либо другой

 
URL   DNS res. 
goodurl.com 10.0.0.1 
badurl1.com 10.0.0.1 
badurl2.com 10.0.0.1 

Я хотел бы настроить Apache2 так, что он работает только с URL goodurl.com, а не какой-либо другой.

Я нашел способ дать «доступ запрещен» по конкретным 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 будет отклоняться по умолчанию?

заранее спасибо за вашу помощь

 
system SO:  Linux 2.6.32-5-amd64 x86_64 GNU/Linux 
Server version: Apache/2.2.16 (Debian) 

ответ

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

1

Друг предложил мне, чтобы добавить это в нижней части конфигурационного файла. Он работает так, как я ожидал.

Хитрость заключается в создании (псевдо) случайного имени сервера и предоставлении «*» в качестве ServerAlias.

Таким образом, он соответствует моей правильной конфигурации для ServerName и ServerAlias, которые я сконфигурировал наверху, и отменил «dir» (без прав доступа) для всех других URL-адресов, отображающих мой IP-адрес.

[email protected]:/var/www# mkdir fail 
[email protected]:/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>