我正在尝试在 aws ec2 实例上启动并运行我的 django 项目。我正在使用 gunicorn 和 nginx,但我不太确定如何解决这个问题。我已经花了几个小时,包括查看这个网站上的其他帖子……但我仍然卡住了。以下是错误的原因:除了 502 Bad Gateway 之外,我的 nginx 错误日志还不断返回以下内容:
2015/07/17 08:32:32 [error] 8049#0: *18 connect() failed (111: Connection refused) while connecting to upstream, client: ip.ip.ip.ip, server: ip.ip.ip.ip, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "ec2-numbers.us-west-1.compute.amazonaws.com"
我/etc/nginx/sites-available/at_api.conf
看起来像这样(这个缩进可以吗?):
server {
listen 80;
server_name ip.ip.ip.ip;
access_log /var/log/nginx/site_access.log;
error_log /var/log/nginx/site_error.log;
location /static/ {
alias /home/ubuntu/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
这是我第一次在 ec2 上设置我的 django 项目...所以我不太确定这是否是正确的做法。有什么建议吗?PS 我看过另一篇类似的帖子,说php-fpm
配置不正确,但我使用的是 django,所以我没有使用任何 php。
編輯:我的at_api/gunicorn.conf.py
proc_name = "at_api"
bind = '127.0.0.1:8001'
loglevel = "error"
workers = 2
编辑2:Netstat
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8463/nginx: worker
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 0.0.0.0:10524 0.0.0.0:* -
udp6 0 0 :::21956 :::* -
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 8754 - /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 52566 - /var/run/supervisor.sock.8446
unix 2 [ ACC ] STREAM LISTENING 6691 - @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 9075 - /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 35450 - /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] SEQPACKET LISTENING 14550 - /run/udev/control
答案1
Connection refused
意味着你的gunicorn
软件没有监听8001
你在 nginx 中配置的端口。你必须检查你的gunicorn
配置。