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

2024-06-12 17:44:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试以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
]

Tags: and文件pathdjangocoredebugimportcom
2条回答

要发现问题,请首先在settings.py中将ALLOWED_HOSTS临时设置为:

ALLOWED_HOSTS = '*'

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

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

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

注:

  • 使用ALLOWED_HOSTS = '*'可能有安全问题,请阅读 关于那个here

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

我的西里尔语域也有同样的问题。

我已经将我的域的惩罚性代码表示添加到允许的主机,这解决了问题。

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

没有惩罚性法规

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

而用惩罚性密码

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

相关问题 更多 >