Виключіть конкретні домени з Apache2 serverAlias, використовуючи псевдонім catch all * (wildcard)


10

У мене є веб-додаток, який повинен підтримувати власні домени, у зв'язку з цим я створив наступний віртуальний сервер на основі імені:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    RackEnv production
    DocumentRoot /srv/www/example/current/public
    <Directory /srv/www/example/current/public>
             AllowOverride all
             Options -MultiViews FollowSymLinks
    </Directory>
    ErrorLog /srv/www/example/log/error.log
    TransferLog /srv/www/example/log/access.log
</VirtualHost>

Помічаєте * як псевдонім сервера? що захоплює всі домени на цьому сервері. Однак у мене є інші сайти на цьому сервері, які я хочу виключити зі цього списку. Для мене вигідніше мати список виключених доменів, ніж встановити вручну кожен домен, на який користувач може зареєструватися в цій службі як серверAlias ​​...

Можливо , це не найкращий шлях, але я шукаю допомогу, в кращому (відносно простий) спосіб налаштувати веб-додаток , який може зловити будь-які домени, дозволяючи при цьому інші специфічні домени , які будуть спрямовані на різні додатки .

Відповіді:


12

Apache здійснює пошук відповідності у тому порядку, у якому визначені домени. Якщо я правильно розумію, що ви вирішили цю проблему, її можна вирішити, визначивши ваших хостів, щоб вони були виключені до вибору всього хоста.

<VirtualHost *:80>
    ServerName excluded.example.com
    ServerAlias  something.example.com ...
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    ...
</VirtualHost>

1
Так, ви маєте рацію, але я спантеличений тим, як це зробити на стандартному стеку Ubuntu 10.4, де цілі шенагігани керуються, маючи доступні сайти та каталоги, що підтримують сайти, і кожне віртуальне визначення хоста існує у власному ексклюзивному файл ... як я можу контролювати порядок у такому випадку?
Victor S

Файли завантажуються в алфавітному порядку (порядок сортування за замовчуванням для ls).
користувач9517

1
для визначення сайту, яке потрібно спершу, назвіть його на зразок 000-excluded.example.com.confу доступному для сайтів режимі.
Брайан Мінтон

Я шукав зробити саме те саме, і це для мене не працює. Виключений.example.com VirtualHost, який мав "ServerName iskljuний.example.com \ n Redirect / example.com/excluded ", викликав усі запити до більш загальної VirtualHost для переадресації (яка, безумовно, слідувала конкретному VirtualHost у конфігурації).
quuxman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.