Размещение статических файлов с помощью mod_wsgi
Я следовал простым инструкциям по настройке Graham для размещения статических файлов вместе с приложением wsgi, смонтированным в корне домена. И на самом деле мой сайт работает.
Однако запросы на статические страницы обрабатываются дважды. Apache отвечает статическим контентом, но приложение wsgi также получает запрос. Например, запрос браузера к "myApp.domain.com/static/test.js" показывает содержимое файла test.js в браузере, но приложение wsgi также вызывается с "static/test.js" в качестве пути.
Соответствующая конфигурация Apache:
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
DocumentRoot /var/www/myApp
ServerName myApp.domain.com
Alias /static/ /var/www/myApp/static/
<Directory /var/www/myApp/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/myApp/app.wsgi
<Directory /var/www/myApp>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess myAppName processes=1
WSGIProcessGroup myAppName
</VirtualHost>
Что мне нужно изменить в конфигурации apache, чтобы предотвратить передачу запроса на myApp.domain.com/static/ в приложение wsgi? Надеюсь, у меня просто есть опечатка где-то...
Изменить: больше не может воспроизводить это поведение.
1 ответ
Из соображений безопасности не следует устанавливать:
DocumentRoot /var/www/myApp
Точнее говоря, вы не должны устанавливать DocumentRoot как родительский каталог, в котором находится исходный код вашего приложения. Это опасно, потому что если вы случайно закомментируете WSGIScriptAlias, ваш исходный код будет доступен для скачивания. Оставьте DocumentRoot вне, чтобы использовать значение по умолчанию, или укажите его на пустой каталог.
Что касается вашей проблемы, какие доказательства вы видите, что ваше приложение поражено URL для статических файлов?