ฉันมีการกำหนดค่า Nginx ต่อไปนี้เพื่อปรับสมดุลการโหลดระหว่างโหนดต่างๆ อย่างไรก็ตาม เมื่อฉันพยายามเปลี่ยนเส้นทางการรับส่งข้อมูลที่ได้รับ 502 เกตเวย์ไม่ถูกต้อง.
จากการอ่านบันทึกข้อผิดพลาด ฉันพบว่าปัญหาเกี่ยวข้องกับความจริงที่ว่าตัวจัดสรรภาระงาน Nginx ของฉันพยายามตรวจสอบความถูกต้องของใบรับรอง X509 ไม่ สำหรับโหนดต่างๆ (backend1.example.com,backend2.example.com
) แต่สำหรับชื่อต้นน้ำ แบ็กเอนด์.example.com
(ไม่มีหมายเลข)ซึ่งนำไปสู่ข้อผิดพลาดที่แสดงด้านล่าง
ฉันจะบอก nginx ให้ใช้ชื่อโฮสต์ของโหนดที่ส่งต่อ แทนที่จะเป็นโหนดอัปสตรีมได้อย่างไร
บันทึกข้อผิดพลาด:
ใบรับรอง SSL อัปสตรีมไม่ตรงกับ "backend.example.com" ในขณะที่ SSL จับมือกับอัปสตรีม...
การกำหนดค่า:
ต้นทาง backend.example.com {
little_conn;
แบ็กเอนด์เซิร์ฟเวอร์ 1.example.com:443
แบ็กเอนด์เซิร์ฟเวอร์ 2.example.com:443
}
เซิร์ฟเวอร์ {
ฟัง [::]:443 ssl ipv6only=เปิด;
ฟัง 443 ssl;
server_name example.com;
ที่ตั้ง / {
proxy_pass https://backend.example.com;
proxy_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
เปิด proxy_ssl_session_reuse;
เปิด proxy_ssl_verify;
proxy_ssl_verify_ความลึก 2;
proxy_set_header โฮสต์ $host;
}
ssl_certificate /etc/letsencrypt/.../fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/.../privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}