调试 Apache/Django/WSGI 错误请求 (400) 错误然后别名子路径
Debugging Apache/Django/WSGI Bad Request (400) Error then aliasing sub-path
我在域 example.com 上有一个 django projet 运行 刚刚好。
我想将一个特定的应用程序别名为 example2.com 但是,当我禁用 django 调试时,我不断收到 Bad Request (400) Error.
我在 debian jessie 上使用 django 1.7.7 和 python 2.7.9。 example.com 和 example2.com 均由带有 WSGI 模块 4.3.0 的 apache 2.4.10 提供。
在 apache 全局范围配置中我有:
WSGIDaemonProcess tracking user=www-data group=www-data processes=2 threads=15 python-path=/path/to/projects/tracking/ display-name=wsgi-django-tracking
在 example.com 虚拟主机中我有:
WSGIScriptAlias / /path/to/projects/tracking/tracking/wsgi.py
WSGIProcessGroup tracking
<Directory /path/to/projects/tracking/tracking/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
在我的 example2.com 虚拟主机中(注意 WSGIScriptAlias 指令的两个参数末尾的 /myapp):
WSGIScriptAlias /myapp /path/to/projects/tracking/tracking/wsgi.py/myapp
WSGIProcessGroup tracking
<Directory /path/to/projects/tracking/tracking/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
在 django 设置中我有:
ALLOWED_HOSTS = ["example.com", "example2.com"]
DEBUG=True
一切正常。当我设置 DEBUG=False
时,example.com 继续工作,但是当我尝试访问 http://example2.com/myapp 时,我得到的只是:
Bad Request (400)
/var/log/apache2/error.log
和 /var/log/apache2/access.log
中都没有显示任何有用信息,所以我有点困惑。
感谢您的帮助。
仔细检查 ALLOWED_HOSTS
条目中是否存在主机名。我知道你说的是,但是如果设置中缺少主机名,400 Bad Request
正是你会得到的错误。
请再次检查ALLOWED_HOSTS
。
请检查您的wsgi.py
这是正确的代码。
import os
import sys
sys.path.append('/var/www/Happ')
os.environ['DJANGO_SETTINGS_MODULE'] = 'Happ.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
要查看日志,您必须添加
<VirtualHost *:80>
ErrorLog /var/log/apache2/error.log
</VirtualHost>
我在域 example.com 上有一个 django projet 运行 刚刚好。 我想将一个特定的应用程序别名为 example2.com 但是,当我禁用 django 调试时,我不断收到 Bad Request (400) Error.
我在 debian jessie 上使用 django 1.7.7 和 python 2.7.9。 example.com 和 example2.com 均由带有 WSGI 模块 4.3.0 的 apache 2.4.10 提供。
在 apache 全局范围配置中我有:
WSGIDaemonProcess tracking user=www-data group=www-data processes=2 threads=15 python-path=/path/to/projects/tracking/ display-name=wsgi-django-tracking
在 example.com 虚拟主机中我有:
WSGIScriptAlias / /path/to/projects/tracking/tracking/wsgi.py
WSGIProcessGroup tracking
<Directory /path/to/projects/tracking/tracking/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
在我的 example2.com 虚拟主机中(注意 WSGIScriptAlias 指令的两个参数末尾的 /myapp):
WSGIScriptAlias /myapp /path/to/projects/tracking/tracking/wsgi.py/myapp
WSGIProcessGroup tracking
<Directory /path/to/projects/tracking/tracking/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
在 django 设置中我有:
ALLOWED_HOSTS = ["example.com", "example2.com"]
DEBUG=True
一切正常。当我设置 DEBUG=False
时,example.com 继续工作,但是当我尝试访问 http://example2.com/myapp 时,我得到的只是:
Bad Request (400)
/var/log/apache2/error.log
和 /var/log/apache2/access.log
中都没有显示任何有用信息,所以我有点困惑。
感谢您的帮助。
仔细检查 ALLOWED_HOSTS
条目中是否存在主机名。我知道你说的是,但是如果设置中缺少主机名,400 Bad Request
正是你会得到的错误。
请再次检查ALLOWED_HOSTS
。
请检查您的wsgi.py
这是正确的代码。
import os
import sys
sys.path.append('/var/www/Happ')
os.environ['DJANGO_SETTINGS_MODULE'] = 'Happ.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
要查看日志,您必须添加
<VirtualHost *:80>
ErrorLog /var/log/apache2/error.log
</VirtualHost>