我有一台安装了 apache httpd 2.2.22 和 Python 2.7.3 的 Debian 7.1 amd64 服务器,用于为 django 应用程序提供服务,我已使用 mod_wsgi 和默认 django 脚本将其挂接到 apache。Django是最新的 1.5.4 版本,所有 python 包依赖项都位于由debian 提供的wsgi.py
虚拟环境中。pip
我已经chown -R www-data:www-data
在整个 django 和 python virtualenv 目录上运行它以使其工作。此虚拟主机的 Apache 配置非常简单,并遵循官方 django 指南https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/。
我设法让它工作了,但有些客户端会得到 apache(不是 django)403 Forbidden 错误页面。此虚拟主机的 apache 错误日志文件包含如下行:
[client x.x.x.x] client denied by server configuration: /path/to/django/wsgi.py
对于其他客户端来说,它运行得非常好。可能出了什么问题?
答案1
该错误来自mod_evasive
apache 模块。
我已经安装了 apache mod_evasive 来进行 DoS 保护,但我不知道仅仅安装这个模块就会影响 apache,而在 Debian 中,这个模块的默认(不存在)配置对于现代基于服务的 Web 应用程序来说是相当激进的。
我/etc/apache2/mods-available/mod-evasive.conf
为该模块创建了一个默认配置,具有更高的限制并解决了问题。