我有一个nginx服务器,它给了我一个我找不到任何信息的错误。服务器正在运行,我相信底层站点(一个Flask应用程序)也在运行,但客户端收到一个通用的500错误。当我查看/var/log/nginx/error.log
时,我看到了这个:
2022/09/04 04:59:52 [error] 1523#1523: *1 connect() failed (111: Unknown error) while connecting to upstream, client: [clients ip], server: mysite.com, request: "GET / HTTP/1.1", upstream: "http://[::1]:8000/", host: "mysite.com"
我不知道该怎么办。我已经搜索了一些信息,但找不到如何深入挖掘或解决问题的任何信息。
我是如何陷入这种状态的
我在Linode上使用Ubuntu运行服务器,并想升级操作系统。为此,我启动了一个新的Linode,安装了最新版本的Ubuntu(22.04),并从头开始重新创建了服务器。在安装完所有内容后,我交换了旧服务器和新服务器的IP地址,以避免重新设置DNS记录。我使用CertBot来管理https证书,所以我再次运行了它,然后重新启动了所有内容。
此时,nginx正在运行,并且我的配置很好。一切看起来与旧服务器上的一样。但每个请求都会出现上面的错误500。
非常感谢任何帮助/指针,使我恢复到正常工作状态!
编辑:nginx配置
server {
server_name = www.mysite.com;
return 301 $scheme://mysite.com$request_uri;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.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
}
server {
server_name mysite.com;
location ^~ /static/ {
include /etc/nginx/mime.types;
root /home/my_username/path/to/code/;
}
location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
proxy_redirect off;
proxy_read_timeout 300s;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.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
}
server {
if ($host = www.mysite.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = mysite.com) {
return 301 https://$host$request_uri;
} # Manually added by me
server_name = mysite.com;
listen 80;
return 404; # managed by Certbot
}