我正在嘗試設定 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。