我遵循了 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 攻击?