连接到上游时上游超时(110:连接超时)

时间:2021-03-03 05:42:27

标签: python-3.x django nginx deployment uwsgi

我想在我的 ubuntu 机器的 AWS ec2 实例中的端口号 8000 上部署我的 Django 网站。但是在运行 Nginx 服务器后,我在浏览器中收到以下 400/Bad request 错误,并且在 Nginx 错误日志中,它显示如下。

upstream timed out (110: Connection timed out) while connecting to upstream, client: 23.104.74.85, server: , request: "GET / HTTP/1.1", upstream: "http://2.12.52.96:8080/", host: "2.12.52.96"

以下是我的代码片段。

my_site.conf

# the upstream component nginx needs to connect to
upstream django {
    server unix:///home/ubuntu/my_site/my_site.sock;
}

# configuration of the server
server {
    listen      8000;
    server_name 2.12.52.96;
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;

    # Django media and static files
    location /media  {
        alias /home/ubuntu/my_site/media;
    }
    location /static {
        alias /home/ubuntu/my_site/static;
    }

    # Send all non-media requests to the Django server.
    location / {
        uwsgi_pass  2.12.52.96:8000; 
        include     /home/ubuntu/my_site/uwsgi_params;
    }
}

uwsgi_params

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

my_site.ini

[uwsgi]

# full path to Django project's root directory
chdir            = /home/ubuntu/my_site/
# Django's wsgi file
module           = my_site.wsgi
# full path to python virtual env
home             =  /home/ubuntu/.virtualenvs/newUser

# enable uwsgi master process
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = /home/ubuntu/my_site/my_site.sock
# socket permissions
chmod-socket    = 666
# clear environment on exit
vacuum          = true
# daemonize uwsgi and write messages into given log
daemonize       = /home/ubuntu/uwsgi-emperor.log

1 个答案:

答案 0 :(得分:0)

最后我从一个 facebook 群组中得到了答案。感谢哈桑·阿里·塞利姆。 因为,我的 Nginx 服务器和我的 Django 网站在同一台机器上运行,所以 server_name 应该是 localhost(Nginx 将访问同一网络内的网站)。 为了更易于理解,我将修改后的配置放在下面。 my_site.conf

# the upstream component nginx needs to connect to
upstream django {
    server unix:///home/ubuntu/my_site/my_site.sock;
}

# configuration of the server
server {
    listen      8000;
    server_name localhost;
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;

    # Django media and static files
    location /media  {
        alias /home/ubuntu/my_site/media;
    }
    location /static {
        alias /home/ubuntu/my_site/static;
    }

    # Send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django; 
        include     /home/ubuntu/my_site/uwsgi_params;
    }
}
相关问题