จะใช้ Ngnix เป็นพร็อกซีย้อนกลับเพื่อเข้าถึง OpenShift (OKD) 4.X ได้อย่างไร
ฉันได้ลองตั้งค่าเป็นร้อยๆ ครั้งสำหรับ reverse proxy (Nginx) และทั้งหมดล้มเหลวด้วยข้อผิดพลาด "สมัครไม่ได้" เมื่อเราเข้าถึง oauth-openshift.apps.mbr.some.dm เส้นทาง.
บันทึก: ปัญหานี้จะไม่เกิดขึ้นหากเราเข้าถึงเส้นทางนี้โดยตรง (โดยไม่ใช้ Reverse Proxy) อาจไม่มีการส่งข้อมูลบางอย่างที่จำเป็นสำหรับเส้นทางที่จะแก้ไข
นี่คือเทมเพลตการกำหนดค่าพื้นฐานที่เราใช้...
เซิร์ฟเวอร์ {
access_log /var/log/nginx/apps.mbr.some.dm-access.log;
error_log /var/log/nginx/apps.mbr.some.dm-error.log;
server_name ~^(?<subdomain>.+)\.apps\.mbr\.some\.dm$;
ที่ตั้ง / {
proxy_pass https://10.2.0.18:443;
proxy_set_header โฮสต์ $subdomain.apps.mbr.some.dm;
proxy_set_header X-Forward-สำหรับ $proxy_add_x_forwarded_for;
}
ฟัง 443;
ssl_certificate /etc/letsencrypt/live/apps.mbr.some.dm/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/apps.mbr.some.dm/privkey.pem;
รวม /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
เรายังทดสอบพารามิเตอร์เหล่านี้และพบปัญหาดังที่คุณเห็นด้านล่าง...
เซิร์ฟเวอร์ {
[...]
ที่ตั้ง / {
[...]
proxy_ssl_certificate /etc/nginx/backend_ss_certs/apps.mbr.some.dm.crt;
proxy_ssl_certificate_key /etc/nginx/backend_ss_certs/apps.mbr.some.dm.key;
proxy_ssl_trusted_certificate /etc/nginx/backend_ss_certs/apps.mbr.some.dm.crt.key.pem;
proxy_ssl_ciphers สูง:!aNULL:!MD5;
proxy_ssl_protocols TLSv1.2 TLSv1.3;
เปิด proxy_ssl_server_name;
เปิด proxy_ssl_session_reuse;
เปิด proxy_ssl_verify;
[...]
}
[...]
}
ใบรับรอง apps.mbr.some.dm.crt, apps.mbr.some.dm.key, apps.mbr.some.dm.crt.key.pem เป็นใบรับรองที่ลงนามเองซึ่งใช้โดย OpenShift (OKD) เพื่ออนุญาตการเข้าถึงทรัพยากร (HTTPS) อย่างไรก็ตาม หากเราพยายามใช้ใบรับรองเหล่านี้กับ reverse proxy (Nginx) ข้อผิดพลาดต่อไปนี้จะเกิดขึ้น ("Bad Gateway")...
22/07/2021 17:36:11 [ข้อผิดพลาด] 6999#6999: *1 ข้อผิดพลาดในการตรวจสอบใบรับรอง SSL ต้นน้ำ: (21:ไม่สามารถตรวจสอบใบรับรองใบแรกได้) ขณะจับมือ SSL ไปยังอัปสตรีม ไคลเอนต์: 177.25.231.233 เซิร์ฟเวอร์: ~ ^(?<subdomain>.+)\.apps\.mbr\.brlight\.net$, คำขอ: "GET /favicon.ico HTTP/1.1", อัปสตรีม: "https://10.2.0.18:443/favicon .ico", โฮสต์: "oauth-openshift.apps.mbr.some.dm", ผู้อ้างอิง: "https://oauth-openshift.apps.mbr.some.dm/oauth/authorize?client_id=console&redirect_uri=https%3A %2F%2Fconsole-openshift-console.apps.mbr.some.dm%2Fauth%2Fcallback&response_type=code&scope=user%3Afull&state=ff6f3064"
หมายเหตุ: เราได้ทดสอบ apps.mbr.some.dm.crt และ apps.mbr.some.dm.crt.key.pem ใบรับรองโดยใช้ ขด และทั้งคู่ก็ทำงานได้อย่างสมบูรณ์แบบ
บวก: เราไม่สามารถกำหนดวิธีการวินิจฉัย/สังเกต (บันทึก) เกี่ยวกับสิ่งที่ผิดพลาดเมื่อคำขอมาถึงเส้นทางได้ oauth-openshift.apps.mbr.some.dm . ฉันคิดว่าสิ่งนี้จะช่วยให้เราทราบว่าเกิดอะไรขึ้น