我在上游使用了自签名证书。上游可以从cURL访问,但不能从NGinX访问。这是我遵循的过程。
我更改了主机文件,并添加了带有域名的上游IP。
10.0.1.2 xxx.yyy.com
然后我使用下面的命令访问该应用程序,并且成功。
curl GET "https://xxx.yyy.com/test" --cacert /etc/upstream.ca-cert.crt -v
然后,我想通过NGinX访问该应用程序。因此,我想在客户端与NGinX服务器之间以及NGinX服务器与应用程序之间创建安全连接。客户端与NGinX之间的连接工作正常,但NGinX服务器与应用程序之间的握手无法正常工作。
这些是配置。
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
server_name xxx.yyy.com;
location / {
include /etc/nginx/proxy_params;
proxy_pass https://backend-server;
proxy_ssl_certificate /etc/nginx/ssl/upstream.ca-cert.crt;
proxy_ssl_certificate_key /etc/nginx/ssl/upstream.ca-cert.key;
proxy_ssl_server_name on;
rewrite ^(.*):(.*)$ $1%3A$2;
}
upstream backend-server {
ip_hash;
zone backend 64k;
server 10.0.1.2:443 max_fails=1000 fail_timeout=30s;
}
以下是NGinX中的错误日志。
2019/12/05 06:46:40 [error] 5275#0: *2078 peer closed connection in SSL handshake while SSL handshaking to upstream, client: xxx.xxx.xxx.xxx, server: xxx.yyy.com, request: "GET /test HTTP/1.1", upstream: "https://10.0.1.2:443/carbon", host: "xxx.yyy.com"