Tôi đang thiết lập bộ cân bằng tải phải giao tiếp với các nút khác bằng TLS. Điều này rất quan trọng vì các nút back-end không nằm trong mạng riêng. Cấu hình là cái bên dưới.
Kết quả là Nginx trả về 502 cổng xấuvà Nginx dường như không thể chuyển hướng đến miền của tôi. Hơn nữa, vì tôi đang sử dụng mã nguồn mở phiên bản, tôi không thể sử dụng giải quyết từ khóa bên trong cấu hình ngược dòng. Làm cách nào tôi có thể thay đổi cấu hình này để có dữ liệu mã hóa Nginx giữa example.com -> backendX.example.com?
LƯU Ý: nếu tôi sử dụng IP thay vì URL vào khối ngược dòng thì tính năng cân bằng tải sẽ hoạt động, nhưng tôi không nghĩ nó được mã hóa
LỖI:
*3 Lỗi xác minh chứng chỉ SSL ngược dòng: (2:không thể lấy chứng chỉ của nhà phát hành) trong khi SSL bắt tay ngược dòng, máy khách: 0.0.0.0, máy chủ: lb.example.com
Kết quả của openssl s_client -kết nối backend1.example.com
:
Chuỗi chứng chỉ
0 s:CN = backend1.example.com
i:C = US, O = Let
1 s:C = US, O = Let
i:C = US, O = Nhóm nghiên cứu bảo mật Internet, CN = ISRG Root X1
2 s:C = US, O = Nhóm nghiên cứu bảo mật Internet, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
ví dụ ngược dòng.com{
less_conn;
máy chủ phụ trợ1.example.com;
máy chủ phụ trợ2.example.com;
}
người phục vụ {
lắng nghe [::]:443 ssl ipv6only=on;
nghe 443 ssl;
server_name lb.example.com;
địa điểm / {
proxy_pass https://example.com;
proxy_ssl_trusted_certificate /etc/letsencrypt/.../chain.pem;
bật proxy_ssl_session_reuse;
bật proxy_ssl_verify;
proxy_ssl_verify_depth 2;
proxy_set_header Máy chủ lưu trữ $host;
}
ssl_certificate /etc/letsencrypt/.../fullchain.pem;
ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;
sự kiện {
công_nhân kết_nối 768 ;
}
http {
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 2048;
trình phân giải 8.8.8.8 8.8.4.4 hợp lệ=30 giây;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
bật ssl_prefer_server_ciphers;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
bật gzip;
bao gồm /etc/nginx/conf.d/*.conf;
bao gồm /etc/nginx/sites-enabled/*;
}
ví dụ ngược dòng.com{
less_conn;
máy chủ phụ trợ1.example.com;
máy chủ phụ trợ2.example.com;
}
người phục vụ {
lắng nghe [::]:443 ssl ipv6only=on;
nghe 443 ssl;
server_name lb.example.com;
địa điểm / {
proxy_pass https://example.com;
proxy_ssl_trusted_certificate /etc/letsencrypt/.../chain.pem;
bật proxy_ssl_session_reuse;
bật proxy_ssl_verify;
proxy_ssl_verify_depth 2;
proxy_set_header Máy chủ lưu trữ $host;
}
ssl_certificate /etc/letsencrypt/.../fullchain.pem;
ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
bao gồm /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
người phục vụ {
nếu ($host = lb.example.com) {
trả lại 301 https://$host$request_uri;
}
nghe 80 default_server;
lắng nghe [::]:80 default_server;
server_name lb.example.com;
trả lại 404;
}
ssl_session_cache được chia sẻ:le_nginx_SSL:10m;
ssl_session_timeout 1440m;
tắt ssl_session_tickets;
ssl_protocols TLSv1.2 TLSv1.3;
tắt ssl_prefer_server_ciphers;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";
nginx -t
nginx: cú pháp file cấu hình /etc/nginx/nginx.conf là ok
nginx: file cấu hình /etc/nginx/nginx.conf kiểm tra thành công