我正在尝试设置一个 Nginx 服务器来反向代理 tomcat web 服务(我无法访问)。这主要是因为 Tomcat 服务器正在运行 TLSv1.0,所以我试图提高版本。
但是,当我尝试访问代理时,出现了 502 错误。Ngnix 日志显示 - SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream
。
这是我的 Nginx 配置 -
ssl_certificate /etc/nginx/certs/public.pem;
ssl_certificate_key /etc/nginx/certs/private.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
server {
listen 6003;
server_name example.com;
ssl on;
location / {
proxy_pass https://example.com:6003;
}
}
我已经尝试使用 Apache 执行相同的操作,但看到完全相同的错误。有人有什么想法吗?
答案1
这是类似的答案nginx 作为带有上游 SSL 的反向代理. 有单独的SSL 设置设置上游代理可接受的协议
...
server {
listen 6003;
server_name example.com;
ssl on;
ssl_certificate /etc/nginx/certs/example.pem;
ssl_certificate_key /etc/nginx/certs/private.key;
... other settings
location / {
proxy_pass https://example.com:6003;
proxy_ssl_trusted_certificate /etc/nginx/certs/example.pem;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
}
列出的三个值proxy_ssl_protocols
是当前的默认设置,但它们可能会在未来的版本中发生变化,从而删除 TLSv1 和 TLSv1.1。