Am configurat un echilibrator de încărcare care trebuie să comunice cu celelalte noduri folosind TLS. Acest lucru este important, deoarece nodurile back-end nu sunt într-o rețea privată. Configurația este cea de mai jos.
Rezultatul este că Nginx revine 502 Bad Gateway, iar Nginx pare să nu poată redirecționa către domeniile mele. În plus, din moment ce folosesc sursa deschisa versiunea, I nu poti folosește rezolva cuvânt cheie în configurația amonte. Cum pot schimba această configurație pentru a avea Nginx să cripteze datele între example.com -> backendX.example.com?
NOTĂ: dacă folosesc IP-uri în loc de adrese URL în blocul din amonte, echilibrarea încărcăturii funcționează, dar nu cred că este criptată
EROARE:
*3 eroare de verificare a certificatului SSL în amonte: (2: nu se poate obține certificatul emitentului) în timp ce se face legătura SSL către amonte, client: 0.0.0.0, server: lb.example.com
Rezultat al openssl s_client -connect backend1.example.com:
Lanț de certificate
0 s:CN = backend1.example.com
i:C = US, O = Let
1 s:C = US, O = Let
i:C = SUA, O = Internet Security Research Group, CN = ISRG Root X1
2 s:C = SUA, O = Internet Security Research Group, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
în amonte example.com{
minimum_conn;
server backend1.example.com;
server backend2.example.com;
}
Server {
asculta [::]:443 ssl ipv6only=on;
asculta 443 ssl;
nume_server lb.example.com;
Locație / {
proxy_pass https://example.com;
proxy_ssl_trusted_certificate /etc/letsencrypt/.../chain.pem;
proxy_ssl_session_reuse activat;
proxy_ssl_verify on;
proxy_ssl_verify_depth 2;
proxy_set_header Gazdă $gazdă;
}
ssl_certificate /etc/letsencrypt/.../fullchain.pem;
ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
includ /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;
evenimente {
conexiuni_muncitor 768;
}
http {
sendfile activat;
tcp_nopush activat;
tcp_nodelay activat;
keepalive_timeout 65;
types_hash_max_size 2048;
resolver 8.8.8.8 8.8.4.4 valid=30s;
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers activat;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
includ /etc/nginx/conf.d/*.conf;
includ /etc/nginx/sites-enabled/*;
}
în amonte example.com{
minimum_conn;
server backend1.example.com;
server backend2.example.com;
}
Server {
asculta [::]:443 ssl ipv6only=on;
asculta 443 ssl;
nume_server lb.example.com;
Locație / {
proxy_pass https://example.com;
proxy_ssl_trusted_certificate /etc/letsencrypt/.../chain.pem;
proxy_ssl_session_reuse activat;
proxy_ssl_verify on;
proxy_ssl_verify_depth 2;
proxy_set_header Gazdă $gazdă;
}
ssl_certificate /etc/letsencrypt/.../fullchain.pem;
ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
includ /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Server {
dacă ($gazdă = lb.example.com) {
returnează 301 https://$host$request_uri;
}
asculta 80 default_server;
asculta [::]:80 default_server;
nume_server lb.example.com;
întoarce 404;
}
ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers dezactivat;
ssl_ciphers „ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHACH3840:-DHACH3820:ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";
nginx -t
nginx: sintaxa fișierului de configurare /etc/nginx/nginx.conf este ok
nginx: fișierul de configurare /etc/nginx/nginx.conf testul a reușit