【问题标题】:nginx, uwsgi, DJango, 502 when DEBUG=False, "upstream prematurely closed connection"nginx,uwsgi,DJango,502 当 DEBUG=False,“上游过早关闭连接”
【发布时间】:2015-12-04 12:26:46
【问题描述】:

我有一个运行 Django 应用程序的工作 nginx 生产服务器,使用 uwsgi(设置为 this tutorial)。

nginx 和 uwsgi 正在通过 UNIX 套接字进行通信。

但是,只要我在 Django 设置中打开 DEBUG = False,就会收到 502 错误。 nginx错误日志告诉我:

2015/09/08 10:37:51 [error] 940#0: *4 upstream prematurely closed connection while reading response header from upstream, client: myIP, server: mydomain.ca, request: "GET /quests/ HTTP/1.1", upstream: "uwsgi://unix:///tmp/hackerspace.sock:", host: "myDomain"

如何防止套接字连接超时,为什么 DEBUG = False 会产生这种差异?

谢谢!

【问题讨论】:

  • 你检查过uwsgi日志吗?
  • 报错成功了吗?
  • @Lukasz 不,但我将在下周再次尝试退出调试模式,如果找到解决方案,我会报告给大家。

标签: django sockets nginx wsgi uwsgi


【解决方案1】:

我找到了适合我的解决方案。我必须在 django 的 settings.py 中为 ALLOWED_HOSTS 列表指定主机

ALLOWED_HOSTS = ['example.com', 'example.dev']

【讨论】:

    【解决方案2】:

    “ALLOWED_HOSTS”答案也解决了我的问题。需要详细说明的一件事,因为无论如何我都不清楚,所以您在此处输入的值是您的网站将被访问的潜在域名(IP 等)。 如果您的站点是http://mysite.here/,那么您需要将“mysite.here”放入 ALLOWED_HOSTS 列表中。显然,使用 Debug=True 没有 HOST 验证,一旦它切换到 False 系统开始拒绝任何 HOST: 标头值未出现在列表中的请求。进一步阅读: https://docs.djangoproject.com/en/1.10/ref/settings/

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 2019-04-04
      • 2015-02-08
      • 2022-11-27
      • 2015-08-08
      • 2019-05-15
      • 2014-04-02
      • 1970-01-01
      相关资源
      最近更新 更多