使用 Apache/NginX 部署时出现 Django Bad Request(400) 错误

Posted

技术标签:

【中文标题】使用 Apache/NginX 部署时出现 Django Bad Request(400) 错误【英文标题】:Django Bad Request(400) Error in Deployment with Apache/NginX 【发布时间】:2014-03-20 13:25:51 【问题描述】:

我正在尝试以Debug=False 模式在 VPS 上午餐我的应用程序。 Debug=True 工作正常,但是当我将其更改为 false 时出现此错误。我使用 Apache 来渲染 python 页面和 nginx 来提供我的静态文件。我尝试使用这个[答案]:Debugging Apache/Django/WSGI Bad Request (400) Error,但至少对我不起作用。这是我的 wsgi 配置:

#wsgi.py
import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
path = '/var/www/example'
if path not in sys.path:
    sys.path.append(path)

我还在我的设置文件中添加了以下代码:

ALLOWED_HOSTS = [
    '.example.com', # Allow domain and subdomains
    '.example.com.', # Also allow FQDN and subdomains
]

【问题讨论】:

你用你的真实域名替换example.com?您是否也收到此ALLOWED_HOSTS = '*' 的 404 错误?您的模板文件夹的根目录中有404.html 模板文件吗? @OmidRaha 谢谢我更改了ALLOWED_HOSTS = '*' 并解决了问题。你能解释一下为什么我的域名不行吗?是的,我将 example.com 更改为我的真实域名。 * 不好,通过添加域来修复它,查看ALLOWED_HOSTS 不,两者都不起作用。但是* 的问题是什么? * 具有安全性issue,首先将* 设置为ALLOWED_HOSTS,然后在某处查看打印并查看print(request.META['HTTP_HOST'])print(request.get_host()) 的输出,然后设置该输出(只是它作为列表的域)到您的ALLOWED_HOSTS 【参考方案1】:

要发现你的问题,首先在settings.py设置ALLOWED_HOSTS暂时为:

ALLOWED_HOSTS = '*'

然后在您的view 中的某个位置,尝试打印并查看此命令的输出:

print(request.META['HTTP_HOST']) # or print(request.get_host())

然后根据输出,将它(只是它的域作为列表)设置为您的ALLOWED_HOSTS

注意事项:

使用ALLOWED_HOSTS = '*' 可能会给您带来安全问题,请阅读 关于那个here。

每次更改后,您都需要重新启动服务(apache/nginx)。

【讨论】:

【参考方案2】:

我的西里尔域名也遇到了同样的问题。

我已将我的域的 punicode 表示添加到 ALLOWED_HOSTS,这解决了问题。

也许这应该作为一个错误发送给 Django,但我没有深入研究(这可能是我的托管配置的问题),只是 ab(当然还有浏览器)。这个问题对我来说也是间歇性的(通常比下面用 ab 显示的更糟糕)。

没有 punicode

完成请求:20 失败的请求:3

使用 punicode 时

完成请求:20 失败的请求:0

【讨论】:

以上是关于使用 Apache/NginX 部署时出现 Django Bad Request(400) 错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk 使用 CLI 部署时出现 Botocore 错误

使用 elasticbeanstalk 部署 Flask 时出现 AWS mod_wsgi 错误

使用 ngrok 部署烧瓶应用程序时出现错误索引

尝试使用 cloud build (gcp) 部署时出现 URL not found

在部署的 AWS 环境中使用 cookie 时出现 CORS 问题

Oracle MAF:使用 cordova 插件时出现部署错误