我目前总是在用户正在进行的查询中得到502 ...这通常会返回872行并在MySQL中运行2.07。然而,它返回了大量信息。 (每行包含很多东西)。有什么想法吗?
运行Django(tastypie Rest API),Nginx和uWSGI堆栈。
使用NGINX的服务器配置
# the upstream component nginx needs to connect to
upstream django {
server unix:///srv/www/poka/app/poka/nginx/poka.sock; # for a file socket
}
# configuration of the server
server {
# the port your site will be served on
listen 443;
# the domain name it will serve for
server_name xxxx; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 750M; # adjust to taste
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /srv/www/poka/app/poka/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
UWSGI配置
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 2
# the socket (use the full path to be safe
socket = /srv/www/poka/app/poka/nginx/poka.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
pidfile = /tmp/project-master.pid # create a pidfile
harakiri = 120 # respawn processes taking more than 20 seconds
max-requests = 5000 # respawn processes after serving 5000 requests
daemonize = /var/log/uwsgi/poka.log # background the process & log
log-maxsize = 10000000
#http://uwsgi-docs.readthedocs.org/en/latest/Options.html#post-buffering
post-buffering=1
logto = /var/log/uwsgi/poka.log # background the process & log
答案 0 :(得分:12)
这不太可能是nginx配置问题。
几乎可以肯定,后端实际上是崩溃(或者只是终止连接),而不是给出错误的响应。即错误信息告诉你问题是什么,但你找错了地方解决它。
您没有提供足够的信息以便用来确定究竟是什么问题,但如果我不得不猜测:
通常返回872行,并在MySQL中运行2.07。然而,它返回了大量信息。
它要么在某个地方超时,要么耗尽内存。
答案 1 :(得分:6)
我有同样的问题,为我修复的是在我的域名中添加我的域名 settings.py 例如:
ag -t
同样的问题,我的意思是我甚至无法加载页面,nginx将返回502而不提供任何可能导致应用程序崩溃的页面。
nginx日志包含:
ALLOWED_HOSTS = ['.mydomain.com', '127.0.0.1', 'localhost']
答案 2 :(得分:1)
在@django位置块中,您可以尝试添加一些代理读取和连接超时属性。 e.g。
location @django {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
# proxy header definitions
...
proxy_pass http://django;
}
答案 3 :(得分:0)
有时可能是权威问题。检查项目目录的权限。
答案 4 :(得分:0)
这可能是uwsgi配置问题,而不是Nginx。我看到您的uwsgi进程= 2,而harakiri = 120,您是否尝试过逐一更改这些字段以及其他字段?
我有同样的问题,但这不是我的NGINX配置,这是我的UWSGI进程在我将JSON从客户端发布到服务器时导致超时错误。我的流程为5,将其更改为1,这样就解决了问题。对于我的应用程序,我只需要一次运行1个进程。
这是工作的UWSGI配置自动启动ini文件,该文件解决了超时问题,从而解决了502网关问题(上游提前关闭)。
autoboot.ini
#!/bin/bash
[uwsgi]
socket = /tmp/app.sock
master = true
chmod-socket = 660
module = app.wsgi
chdir = home/app
close-on-exec = true # Allow linux shell via uWSGI
processes = 1
threads = 2
vacuum = true
die-on-term = true
希望有帮助。