Как отключить просмотр каталогов для приложения фляги, размещенного с использованием apache mod_wsgi для доступа CNAME из другого домена

Что-то странное происходит с моим флеш-приложением, которое я разместил с помощью apache mod_wsgi в Ubuntu. У меня есть настройка виртуального хоста с импортированным в нее приложением для фляги. Мой виртуальный хост присутствует в /etc/apache2/sites-available/ и включен. Файл такой:

<VirtualHost *:80>
    ServerName domain1.com

    WSGIDaemonProcess app user=flask group=www-data threads=5 home=/var/www/app
    WSGIScriptAlias / /var/www/app/app.wsgi

    <Directory /var/www/app>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

Мое приложение отлично работает, когда я получаю к нему доступ через domain1.com. Однако, если у меня есть domain2.com с записью CNAME, указывающей на domain1.com, я могу просматривать каталоги и файлы при доступе к domain2.com. Точно так же, когда я меняю имя_сервера на domain2.com, список каталогов виден с domain1.com.

Мне посоветовали отредактировать файл httpd.conf и удалить запись Indexes или изменить ее на -Indexes, чтобы отключить просмотр каталога, но файл пуст. Я хотел бы, чтобы приложение работало только с домена, указанного в ServerName, а не с любого другого доменного имени, указывающего на него. Пожалуйста, порекомендуйте.

2 ответа

Решение

Данный совет верен, но я считаю, что в Ubuntu виртуальный хост по умолчанию находится в /etc/apache2/apache2.conf или /etc/apache2/sites-available/default. происходит то, что, поскольку оба домена разрешают один и тот же IP-адрес, домен2 выбирает конфигурацию Apache по умолчанию, поскольку у него нет собственного виртуального хоста.

Вы также можете предотвратить это, переместив корень документа домена domain1 в другое место, но в любом случае рекомендуется отключить индексы.

Что касается второго доменного имени, так как Apache не может найти соответствующий VirtualHost, он обратится к использованию самого первого определения VirtualHost, найденного при анализе конфигурации.

Для объяснения этого в несколько ином контексте см.:

Прочтите раздел "Откат к определению VirtualHost по умолчанию".

Если вы хотите, чтобы все другие доменные имена были заблокированы, измените VirtualHost по умолчанию на:

<VirtualHost _default_:*>
Deny from all
</VirtualHost>
Другие вопросы по тегам