Как отключить просмотр каталогов для приложения фляги, размещенного с использованием 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>