Размещение статических файлов с помощью 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 для статических файлов?

Другие вопросы по тегам