我想在我的 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
答案 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;
}
}