django web 服务器中的 403 禁止错误

Posted

技术标签:

【中文标题】django web 服务器中的 403 禁止错误【英文标题】:403 Forbidden Error in django web server 【发布时间】:2016-07-18 04:48:47 【问题描述】:

我正在尝试在网络服务器上部署我的应用程序(带有 apache2 和 mod_wsgi 的 django)。但是我在运行网站时遇到了 403 禁止错误..(禁止 您无权访问此服务器上的 /。 Apache/2.4.7 (Ubuntu) 服务器位于 104.131.127.196 端口 80)。我的 Web 应用程序的结构如下所示:

CASINOVA
|-- Casinova
|   |-- db.sqlite3
|   |-- index.html
|   |-- manage.py
|   |-- casinova
|   |   |-- __init__.py
|   |   |-- __init__.pyc
|   |   |-- settings.py
|   |   |-- settings.pyc
|   |   |-- urls.py
|   |   |-- urls.pyc
|   |   |-- wsgi.py
|   |   `-- wsgi.pyc
|   `-- static

sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
Alias /static /var/www/html/CASINOVA/Casinova/static/
<Directory /var/www/html/CASINOVA/Casinova/static>
Options Indexes FollowSymLinks Includes ExecCGI
Require all granted
</Directory>
<Directory /var/www/html/CASINOVA/Casinova>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>
WSGIDaemonProcess Casinova python-path=/var/www/html/CASINOVA/Casinova:/var/www/html/CASINOVA/venv/Casinova/lib/python2.7/si$
WSGIProcessGroup Casinova
WSGIScriptAlias / /var/www/html/CASINOVA/Casinova/casinova/wsgi.py

ServerName 0.0.0.0
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/CASINOVA/Casinova
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
AddHandler cgi-script .py

sudo vi /etc/apache2/apache2.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>
<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
ServerName mydomain.com

vi /etc/hosts.py

127.0.0.1 localhost
104.131.127.196 Casinova
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

#ls -l /var/www/html

drwxr-xr-x 4 root root  4096 Mar 29 08:42 CASINOVA
-rw-r--r-- 1 root root 11510 Mar 30 03:05 index.html
-rw-r--r-- 1 root root    20 Oct 28 01:42 info.php

我已经发布了文件 default.conf、apache2.conf 和 hosts.py 中的内容。那有什么错误?

【问题讨论】:

查看tail -n 50 /var/log/apache2/error.log,它会提示您缺少哪些权限。 错误是“Options ExecCGI is off in this directory”。我已经通过用 Options Indexes FollowSymLinks MultiViews 替换“Options Indexes FollowSymLinks Includes ExecCGI”来清除它。但是同样的禁止错误发生@Cyrbil @shalin 可能是一个愚蠢的问题。如何像您问题中的第一个代码示例那样创建 django 项目结构? 【参考方案1】:
<Directory /var/www/html/CASINOVA/Casinova/static>
Options Indexes FollowSymLinks Includes ExecCGI
Require all granted
</Directory>

我猜,为你的 Django 目录设置 ExecCGI,而不是为/static

<Directory /var/www/html/CASINOVA/Casinova>
Options ExecCGI
</Directory>

【讨论】:

以上是关于django web 服务器中的 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

Django/AWS - 调用 HeadObject 操作时发生错误(403):禁止

是否真的可以破解引发403错误的禁止Web浏览器区域?

如何解决安装IIS时出现HTTP错误403禁止访问?

django ajax 发布 403 被禁止

Django 403 禁止错误

HTTP 错误 403.14 - 禁止 - Web 服务器配置为不列出此目录的内容