2013-10-13 65 views
0

我有一台安装了Apache httpd 2.2.22和Python 2.7.3的Debian 7.1 amd64服务器,用于服务我已上过的django应用程序到Apache使用mod_wsgi和默认的django wsgi.py脚本。 Django是最新的1.5.4版本,在Debian提供的pip管理的virtualenv中包含所有python软件包依赖项。运行Django应用程序的Apache 2.2.22显示错误“客户端被服务器配置拒绝”

我在整个django应用程序和python virtualenv目录上运行了chown -R www-data:www-data以使其工作。这个虚拟主机的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/proj/app/wsgi.py 

它对其他客户端来说工作得很好。出了什么问题?

编辑:这里是Apache的配置:

<VirtualHost *:80> 
ServerName mydomain.com 
ServerAlias www.mydomain.com 
ServerAdmin [email protected] 
ErrorLog ${APACHE_LOG_DIR}/error_django.log 
LogLevel warn 
CustomLog ${APACHE_LOG_DIR}/access_django.log combined 
Options -Indexes +FollowSymLinks +MultiViews 

Alias /robots.txt /path/to/django/proj/static/robots.txt 
Alias /favicon.ico /path/to/django/proj/static/img/favicon.ico 

Alias /media/ /path/to/django/proj/media/ 
Alias /static/ /path/to/django/proj/static/ 

<Directory /path/to/django/proj/media> 
    Order allow,deny 
    Allow from all 
</Directory> 

<Directory /path/to/django/proj/static> 
    Order allow,deny 
    Allow from all 
</Directory> 

<Directory /path/to/django/proj/app> 
    <Files wsgi.py> 
     Order allow,deny 
     Allow from all 
    </Files> 
</Directory> 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^www.mydomain.com 
    RewriteRule (.*) http://mydomain.com$1 [R=301,L] 
</IfModule> 

<IfModule mod_wsgi.c> 
    WSGIDaemonProcess mydomain.com processes=10 threads=15 display-name=%{GROUP} python-path=/path/to/django/proj:/path/to/virtualenv/lib/python2.7/site-packages 
    WSGIProcessGroup mydomain.com 
    WSGIPassAuthorization On 
    WSGIScriptAlias//path/to/django/proj/app/wsgi.py 
</IfModule> 

</VirtualHost> 
+0

请问您可以发布您的apache虚拟主机配置.. –

+0

@RahulPatil我添加了配置。 – aalizadeh

+0

一旦检查这个http://paste.ubuntu.com/6231464/ –

回答

1

这个错误来自mod_evasive Apache模块。

我已经安装了用于DoS保护的apache mod_evasive,并且我不知道仅仅通过安装这个模块就会影响apache,并且对于这个模块的debian默认(不存在)配置对于现代基于服务的web应用。

我创建了/etc/apache2/mods-available/mod-evasive.conf作为此模块的默认配置,并且解决了更高的限制和问题。

相关问题