ข้อมูลรับรองพร็อกซีของ Docker: การเข้ารหัส URL และการหลบอักขระเปอร์เซ็นต์ของ systemd
เข้ารหัสองค์ประกอบข้อมูลรับรองพร็อกซีเป็นเปอร์เซ็นต์ จากนั้นรักษาเครื่องหมายเปอร์เซ็นต์เหล่านั้นผ่านการกำหนดค่า Environment ของ systemd
ชื่อผู้ใช้พร็อกซีแบบโดเมนอาจมีเครื่องหมายแบ็กสแลช และรหัสผ่านอาจมีอักขระที่ไวยากรณ์ URI สงวนไว้ เมื่อสร้าง URL ของพร็อกซี ให้เข้ารหัสองค์ประกอบข้อมูลรับรองเหล่านั้น: ตัวอย่างเช่น แบ็กสแลชกลายเป็น %5C
การกำหนดค่า Environment ในบริการ systemd เพิ่มตัวแยกวิเคราะห์อีกตัวหนึ่ง เครื่องหมายเปอร์เซ็นต์แบบตรงตัวในการกำหนดค่าของยูนิตต้องเขียนเป็นสองเท่า:
[Service]
Environment="HTTPS_PROXY=http://DOMAIN%%5Cproxy-user:example%%[email protected]:8080"
ค่าตัวอย่างแสดงถึงชื่อผู้ใช้แบบโดเมนและรหัสผ่านที่มี # systemd เปลี่ยน %% เป็น % จึงเหลือ URL ที่เข้ารหัสไว้ให้แดมอน เพิ่มการกำหนดค่า HTTP_PROXY ที่สอดคล้องกันหากสคีมาปลายทางนั้นต้องการเส้นทางนี้ด้วย
เปอร์เซ็นต์คู่เป็นไวยากรณ์ของ systemd ส่วนค่าพร็อกซีใน daemon.json ของ Docker กลับมี escape ของ URI ตามปกติ เช่น %5C และ %23 อย่าคัดลอกการสะกดจากไฟล์ยูนิตไปยัง JSON หรือช่อง URL ของพร็อกซีในไคลเอนต์โดยไม่เปลี่ยนแปลง
ให้มองดูแหล่งที่กำหนดค่าไว้ด้วย Docker ระบุว่าการกำหนดค่าพร็อกซีของแดมอนมีลำดับความสำคัญเหนือตัวแปรสภาพแวดล้อมพร็อกซี ค่า JSON ที่เก่ากว่าจึงอาจซ่อนสภาพแวดล้อมของบริการที่แก้ไขแล้วได้