当前位置: 首页 > 知识库问答 >
问题:

Django Gunicorn Nginx:Debug中的错误请求(400)=True

桂高义
2023-03-14

我正在尝试使用Django、nginx和Gunicorn运行我的服务器。在开发服务器上,一切都很顺利。但是在正式服上,Gunicorn总是返回一个错误的请求(400)。

我知道我需要设置我的ALLOWED\u HOSTS变量,我做到了。我尝试了正确的域、星号,甚至将DEBUG设置为True。但是,它始终是错误的请求(400)。

这是我的nginx配置:

server {
    listen 80;

    location /static {
        alias /home/username/sites/sub.domain.example.com/static;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:8000;
    }
}

我的wsgi-prod.py文件:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings_prod")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

settings_prod.py文件(缩短):

DEBUG = False
ALLOWED_HOSTS=["*"]

我以以下方式启动gunicorn(使用virtualenv):

gunicorn --bind 127.0.0.1:8000 app.wsgi_prod:application

当我用manage启动服务器时。py runserver--设置=应用程序。settings\u prod,可以访问该网站。gunicorn的错误日志没有显示任何内容,访问日志只显示400。静态内容确实有效。

共有2个答案

孙昂然
2023-03-14

这为我修复了它:

location / {
    proxy_pass http://127.0.0.1:8081;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
司寇祖鹤
2023-03-14

您应该告诉Nginx将主机传递给Gunicorn,如下所示:

proxy_set_header        Host            $host;

此外,我还将传递这些值(示例),以便您可以访问请求的IP:

proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

如果您还没有这样做,请检查您的Nginx日志。我希望这有所帮助。

编辑:尝试设置服务器名称,如:

server_name     your_domain.com www.your_domain.com

最后但并非最不重要的一点是,尝试这样设置您的环境(本例中的解决方案):

os.environ['DJANGO_SETTINGS_MODULE'] = "app.settings_prod" 
 类似资料:
  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示:

  • 目标是通过ajax将对象发送到另一台服务器,这是我为CORS设置的,下面是代码。ajax代码片段: 正确发布数据,但使用

  • 我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!

  • 问题内容: 我有一段这样的代码 当我输入的查询超过一个词,例如“狗”时,出现以下错误。 谁能指出我做错了什么?提前致谢。 问题答案: “狗”返回400错误的原因是因为您没有转义URL的字符串。 如果您这样做: 会的。 但是,我强烈建议您使用请求,而不要使用urllib / urllib2 / httplib。这要容易得多,它将为您处理所有这一切。 这是与python请求相同的代码:

  • 问题内容: 验证表单时,我的行为很奇怪。 一旦添加了Hibernate @Valid批注,如果发布的数据无效,Tomcat会将我的请求视为“错误”。如果数据有效,则无后顾之忧。 我用: Tomcat 7.0.52 Javax验证API 1.1.0.Final Hibernate Validator 5.1.0.Final Spring 4.0.3发布 目前,我做了一个非常简单的验证: Spring

  • 我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s

  • 我正在尝试从访问代码中获取访问令牌。但存在 400 错误请求错误的错误 我正在使用此链接获取访问代码 https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 响应此链接,我正在获取查询字符串中的代码,返回 URL 代码=Mh12d04c8