502错误没有在端口8000 nginx上侦听

时间:2018-04-26 00:27:57

标签: django nginx configuration gunicorn bad-gateway

我在尝试部署我的Web服务器时遇到了一个问题,我遇到了502错误的网关错误。

查看nginx错误日志时,我明白了:

failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: xxx.xxx.xxx.xx, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "example.com"

然后我运行sudo netstat -tnlp | grep :8000以查看是否有任何内容正在侦听端口8000,但没有输出,这意味着确实没有任何东西正在侦听端口8000.

此外,这是我在启用网站的nginx配置:

upstream app_server {
     server unix:/home/daniel/myproject/myproject.sock fail_timeout=0;
}

server {
    listen 80;
    server_name 138.197.152.54;
    client_max_body_size 50M;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/daniel/myproject;
}

location / {
    include proxy_params;
    proxy_pass         http://127.0.0.1:8000/;
    proxy_redirect     off;
    # proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_connect_timeout 30;
    proxy_read_timeout 30;
}

我想知道服务器正在侦听的端口是否为假,因为代理传递有127.0.0.1: 8000 ,并且在顶部,服务器显然正在侦听端口 80

我的配置有问题吗?我很擅长使用nginx,gunicorn,非常感谢你对这个问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

所以我发现问题确实存在于我的nginx配置中。 具体来说,解决方案是更改 proxy_pass 的设置。

而不是proxy_pass http://127.0.0.1:8000,它应该是:

proxy_pass http://unix:/home/daniel/myproject/myproject.sock;

当然,使用您的实际文件和目录名称更改 daniel myproject myproject.sock

我从本教程获得了所有这些信息:https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04