使用 mod_wsgi 托管静态文件

使用 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 攻击?

相关内容