Am un proxy invers Nginx, care se oprește în mod misterios să funcționeze după câteva ore. Jurnalul de erori este umplut cu erori SSL de conectare la amonte. Rularea „nginx -s reload” (repornirea serviciului nginx) rezolvă problema până la următoarea eroare. Aveți idei unde să sapă mai departe?
Fișierele de configurare nu se modifică, nu există nicio altă activitate în jurnale. Nu pot indica „timpul de a eșua”, uneori pare să fie de 3-4 ore, uneori undeva în jurul orei 8.
Aplicația este o aplicație web dinamică, bazată pe Java Swing, dintr-o terță parte, din pivnița de groază de companie moștenită... :)
Fragment pentru una dintre numeroasele locații de configurare Nginx pentru locația URI specifică. Nu se poate folosi una / locație deoarece una dintre locații necesită autorizare MTLS, iar altele trebuie pur și simplu să se bazeze pe lista albă.
locație ~* ^/app-location(/?|/.*|-.*)$ {
include /etc/nginx/conf.d/include.APP.whitelist;
proxy_pass https://__APP_LB_DNS__:6443;
proxy_ssl_server_name activat;
proxy_ssl_name __APP_LB_DNS__;
proxy_ssl_trusted_certificate __certificat-backend-ca-location__;
proxy_ssl_verify dezactivat;
proxy_ssl_verify_depth 3;
proxy_ssl_session_reuse activat;
proxy_ssl_certificate __client-certificate-location__;
proxy_ssl_certificate_key __client-certificate-key-location__;
}
După ceva timp, încep să primesc 502: Erori Bad Gateway și error.log este plin cu astfel de erori. 10.0.0.10 este IP-ul de echilibrare a încărcăturii din amonte pentru numele de gazdă APP_LB_DNS.
2022/02/09 21:36:45 [eroare] 12371#12371: *59560 SSL_do_handshake() a eșuat (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alertează eșec de strângere de mână în fluxul de alertă SSL: 40SL) , client: CLIENT_IP, server: EXTERNAL_DNS_NAME, cerere: „GET /app-location/ HTTP/1.1”, în amonte: „https://10.0.0.10:6443/app-location/”, gazdă: „EXTERNAL_DNS_NAME”, referitor: „http://CLIENT_DNS:53998/”
A trebuit să adaug opțiuni pentru a mă asigura că Nginx comunică cu backend-ul Azure LB prin numele său DNS. Altfel primeam erori mai sus în mod constant. Un alt lucru care mă nedumerește este că doar această aplicație ciudată necesită astfel de opțiuni. Alte aplicații scrise interne funcționează bine fără aceste linii.
proxy_ssl_server_name activat;
proxy_ssl_name __APP-DNS__;
Serverul rulează Nginx pe Centos 7 într-o VM Azure
nginx-1.18.0-2.el7.ngx.x86_64
nginx-modsecurity3-centos7-3.0.4-1.x86_64