我目前的情况是我有一个运行docker的ubuntu服务器。在那个 docker 中,我运行 NGINX 作为反向代理,这对于 portainer 来说效果很好,但是当我尝试使用相同的配置(不同 IP 的 ofc)添加第二个子域时,我收到以下错误。它还在浏览器中给我一个 502 错误。
2022/06/13 12:33:29 [错误] 22#22: *5 SSL_do_handshake() 失败(SSL:错误:1408F10B:SSL 例程:ssl3_get_record:版本号错误),同时 SSL 与上游握手,客户端:172.71.94.85 ,服务器:prometheus.x.net,请求:“GET /favicon.ico HTTP/1.1”,上游:“https://172.20.0.110:9090/favicon.ico”,主机:“prometheus.x.net”,引荐来源:“https://prometheus.x.net/”
我使用 Cloudflare 来管理我的源 SSL 证书和边缘 SSL 证书。
这是我的不工作页面的配置(它与其他工作子域完全相同,只是 IP 不同。我三次检查了 IP 和端口,它应该可以工作。
upstream prometheus {
server prometheus:9090;
}
server {
listen 80;
listen [::]:80;
server_name prometheus.x.net;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_verify_client on;
server_name prometheus.x.net;
location / {
# Allow websockets
proxy_http_version 1.1;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
# Default headers
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass https://prometheus;
}
}
我该如何解决这个问题?
编辑:我为 conf.d 文件夹中的每个子域使用 .conf 文件,我不知道这是否重要?
答案1
发帖后一分钟就明白了。应该多花一分钟来排除故障。
与 portainer 不同,该应用程序没有内置 HTTPS,因此根据我当前的配置,NGINX 尝试使用 HTTPS 在本地访问该应用程序,而它只支持 HTTP。
proxy_pass https://prometheus;
应该
proxy_pass http://prometheus;