使用 Nginx 作為 HTTPS 反向代理

使用 Nginx 作為 HTTPS 反向代理

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

相關內容