为什么NGINX给出504网关超时错误?

为什么NGINX给出504网关超时错误?,nginx,web,gunicorn,portforwarding,Nginx,Web,Gunicorn,Portforwarding,我的NGINXconf是- server { listen 80; server_name site.com ; location / { include proxy_params; proxy_pass http://0.0.0.0:8000; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/site.c

我的
NGINX
conf是-

server {
    listen 80;
    server_name site.com ;

    location / {
        include proxy_params;
        proxy_pass http://0.0.0.0:8000;

    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
我正在
Gunicorn
端口8000上运行Flask应用程序。当我尝试访问我的站点时,我得到了一个
504网关超时
nginx/1.14.0(Ubuntu)

error.log
中,它说-

 upstream timed out (110: Connection timed out) while connecting to upstream, client:myip server: site.com, request: "GET / HTTP/1.1", upstream: "http://0.0.0.0:8000/", host: "mysite.com"


您的配置中有一些错误

  • 不能有一台服务器在多个端口上侦听
  • 您不应该写0.0.0.0:8000,而应该尝试写127.0.0.1:8000
另外,我不明白为什么要包含代理参数,请删除该行

下面是一个你可以做的例子

server {
        server_name site.com www.site.com;
        location / {
                proxy_pass http://127.0.0.1:8000/;
        }
        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
        if ($host = www.site.com) {
                return 301 https://$host$request_uri;
        }
        if ($host = site.com) {
                return 301 https://$host$request_uri;
        }
        listen 80;
        listen [::]:80;
        server_name site.com www.site.com;
        return 404;
}

祝你好运:-)

建议保持下面的值,这样可以解决超时问题

proxy_connect_timeout   300;
proxy_send_timeout      300;
proxy_read_timeout      300;

我是否将其放在nginx.conf或sites enabled/mysite中??谢谢!我在站点中有我所有的不同域,然后我在站点中启用了这些文件的快捷方式
sudo ln-s/etc/nginx/sites available/site.com/etc/nginx/sites enabled/
查看一些有关digitalocean的教程。当我这样做的时候,他们真的很好,并且尝试访问我得到504网关超时。即使应用程序正在端口8000上运行,并且可以通过myip:8000访问。您的DNS设置是否正确,是否重新启动了nginx?是的。它过去一直工作得很好,直到今天,我不知道发生了什么。