Я следил за простым инструкции по настройке для размещения статических файлов вместе с приложением 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? Надеюсь, у меня просто где-то опечатка ...
Изменить: больше не может воспроизводить это поведение.
По соображениям безопасности не следует устанавливать:
DocumentRoot /var/www/myApp
Или, более конкретно, вы не должны устанавливать DocumentRoot в качестве родительского каталога, в котором находится исходный код вашего приложения. Это опасно, потому что, если вы случайно закомментируете WSGIScriptAlias, ваш исходный код будет загружен. Оставьте DocumentRoot, чтобы использовать значение по умолчанию, или укажите его на пустой каталог.
Что касается вашей проблемы, какие доказательства вы видите, что ваше приложение попадает по URL-адресу для статических файлов?