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's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
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; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/.../privkey.pem; # được quản lý bởi Certbot
bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
}
#### NGINX -T
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 ;
# đa_chấp vào ;
}
http {
##
# Cài đặt cơ bản
##
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 2048;
# server_token tắt;
# server_name_hash_bucket_size 64;
# máy chủ_tên_trong_chuyển hướng tắt;
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;
##
# Cài đặt SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
bật ssl_prefer_server_ciphers;
##
# Cài đặt ghi nhật ký
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Cài đặt Gzip
##
bật gzip;
# gzip_vary bật;
# gzip_proxied bất kỳ;
# gzip_comp_cấp 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;
##
# Cấu hình máy chủ ảo
##
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; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/.../privkey.pem; # được quản lý bởi Certbot
bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
}
người phục vụ {
nếu ($host = lb.example.com) {
trả lại 301 https://$host$request_uri;
} # được quản lý bởi Certbot
nghe 80 default_server;
lắng nghe [::]:80 default_server;
server_name lb.example.com;
trả lại 404; # được quản lý bởi Certbot
}
# tệp cấu hình /etc/letsencrypt/options-ssl-nginx.conf:
# Tệp này chứa các tham số bảo mật quan trọng. Nếu bạn sửa đổi tập tin này
# theo cách thủ công, Certbot sẽ không thể tự động cung cấp bảo mật trong tương lai
# cập nhật. Thay vào đó, Certbot sẽ in và ghi lại thông báo lỗi với đường dẫn đến
# tệp cập nhật mà bạn sẽ cần tham khảo khi cập nhật thủ công
# tập tin này.
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