Host-заголовок из запросов игнорируется?

Я читаю документы по Apache, но есть много вещей, которые отличаются от Debian [lenny, 5.0.6].

Apache игнорирует заголовок хоста, заданный браузером: http://x/ или http://x:81/ или http://x.mbg.local/ все обслуживаются, но должны быть заблокированы, согласно моему определению. Определение для x происходит из моего файла hosts [который каждый мог сделать таким образом]. Я новичок в Apache, но на моем IIS это работает как ожидалось. Все браузеры работают одинаково [поэтому нет проблем с заголовком браузера].

Я настроил два VirtualHosts, выдержка:

ИмяВиртуалХост Гуго: 80

DocumentRoot / usr / share / doc Alias ​​/ doc / / usr / share / doc / Опции Индексы MultiViews FollowSymLinks Разрешить с 192.168.24.0/24

Другой VirtualHost настроен для порта 81.

Я иду в свой файл hosts в любом окне и добавляю ip-адрес Хьюго под новым именем x. Затем, x обслуживается, хотя host-header в apache - это hugo!! Каждый пользователь из интернета может сделать то же самое!

У меня сейчас нет надежды. Кто-нибудь может мне помочь?

Было бы очень хорошо!

ОБНОВИТЬ

Теперь я только что удалил все из httpd.conf и создал два включенных сайта, чтобы упростить процесс:

Во-первых, для Нагиос [следует подавать только на это:

 http://thor:81/ 

NameVirtualHost thor:81

<VirtualHost thor:81>

ServerName thor:81

ServerAlias thor:81
ServerPath /usr/share/nagios3
DocumentRoot /usr/share/nagios3
</VirtualHost>

но он отвечает на

 http://thor.mbg.local:81/ 
и даже на
 http://x:81/ 
также!

Затем тестовый сервер:

NameVirtualHost thor.mbg.local: 80

    
    ServerName thor.mbg.local
    ServerAlias ​​thor.mbg.local
    DocumentRoot /var/www/default
    
    Заказать Разрешить, Запретить
        Разрешить от всех
    
    

Это тоже ответы на

 HTTP: Thor / 
и на
 http://thor.mbg.local/ 
Эта полная конфигурация принята Apache. Я не мог найти значение по умолчанию, которое переопределило бы конфигурацию.

Возможно ли другое http-серверное программное обеспечение, которое делает это правильным? (Я исхожу из IIS, где это работает.)

Теперь: понял!

Спасибо за помощь! Я не признал, что все свойства, такие как имя / IP и порты должны совпадать везде. В моем случае произошел откат к хосту по умолчанию!!!

Я запустил виртуальную машину с "play-debian" с нуля и разработал ее. Если кто-то увидит окончательное определение, вот оно:

В debians port.conf у меня теперь есть:

NameVirtualHost 192.168.26.92:80

б) в httpd.conf:

<VirtualHost 192.168.26.92:80>

DocumentRoot /var/www/block

<Directory /var/www/block>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order Allow,Deny
    Allow from All ##would just like to see, this is the end!!!
</Directory>

</VirtualHost>

<VirtualHost 192.168.26.92:80>

    ServerName wl1
    ServerAlias wl1
    DocumentRoot /var/www/test80

    <Directory /var/www/test80>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order Allow,Deny
    Allow from All
    </Directory>

    LogLevel debug
    ErrorLog /var/log/apache2/test80-error.log
    CustomLog /var/log/apache2/test80-access.log vhost_combined

</VirtualHost>

<VirtualHost 192.168.26.92:80>

    ServerName wl2
    ServerAlias wl2
    DocumentRoot /var/www/test81

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/test81>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

    LogLevel info
    ErrorLog /var/log/apache2/error-test81.log
    CustomLog /var/log/apache2/test81-access.log vhost_combined

</VirtualHost>

Я считаю, что для начинающего debian плохо иметь слишком много конфигурационных файлов, вы потеряете обзор.

Большое спасибо за помощь!

уш ++mabra

2 ответа

Во многих конфигурациях одно из доступных определений виртуального сервера, обычно первое в файле, действует по умолчанию. По умолчанию Apache служит, когда заголовки запроса не соответствуют одному из виртуальных хостов.

Если это не отвечает на ваш вопрос, приведите более полный пример конфигурации, URL-адреса запроса, что обслуживается и что вы ожидали вместо этого.


РЕДАКТИРОВАТЬ

Насколько я помню, с вашей конфигурацией, когда apache получает запрос с HTTP-заголовком Host:x, он видит, что нет определения того, что он должен делать. Ноль отчаянный, думает, я подам некоторые вещи с первого веб-сайта, который появится, о, смотри, вот сайт для Тора - я просто поделюсь с этого!

См. http://httpd.apache.org/docs/2.0/vhosts/details.html

Первый vhost в этом списке (первый vhost в файле конфигурации с указанным IP-адресом) имеет самый высокий приоритет и перехватывает любой запрос на неизвестное имя сервера или запрос без поля заголовка Host:.

Если это вас беспокоит, установите виртуальный хост для unknown.server.name, укажите его в пустой директории и настройте пользовательский 404, который говорит: "Кто-то указал имя хоста на IP-адрес наших серверов, не договариваясь с нами о веб-сайте. сайт, который будет обслуживаться для этого имени хоста - извините!

Вам не нужно использовать разные порты. Я думаю, что это источник вашей путаницы здесь.

Последняя документация для виртуального хостинга на основе имен (что, я думаю, вы хотите сделать) довольно хороша:

http://httpd.apache.org/docs/current/vhosts/name-based.html

Другие вопросы по тегам