nginx,uwsgi,DJango,502当DEBUG = False时,“上游过早关闭连接”

时间:2015-09-08 17:53:52

标签: django sockets nginx wsgi uwsgi

我有一个运行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会产生这种差异?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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