ฉันเห็นด้วยกับคำชี้แจงของ BillThor ว่านี่เป็นแบบแผนมากกว่ามาตรฐาน
ฉันไม่ทราบที่มาของตัวแปรเหล่านี้ แต่ในกรณีของ HTTP บน * ข้อตกลงจำนวนมากดูเหมือนว่าเกิดจากพฤติกรรมของไลบรารีlibcurl HTTP และโปรแกรมบรรทัดคำสั่ง curl
ที่https://curl.haxx.se/docs/manual.htmlมีคำอธิบายเกี่ยวกับตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับการใช้ HTTP พร็อกซีซึ่ง libcurl / curl เข้าใจ:
ตัวแปรด้านสิ่งแวดล้อม
Curl อ่านและทำความเข้าใจกับตัวแปรสภาพแวดล้อมดังต่อไปนี้:
http_proxy, HTTPS_PROXY, FTP_PROXY
พวกเขาควรจะตั้งค่าสำหรับผู้รับมอบฉันทะเฉพาะโปรโตคอล ควรตั้งค่าพร็อกซีทั่วไปด้วย
ALL_PROXY
รายการชื่อโฮสต์ที่คั่นด้วยเครื่องหมายจุลภาคที่ไม่ควรผ่านพร็อกซีใด ๆ จะถูกตั้งค่าใน (เฉพาะเครื่องหมายดอกจัน, '*' ตรงกับโฮสต์ทั้งหมด)
NO_PROXY
หากชื่อโฮสต์ตรงกับหนึ่งในสตริงเหล่านี้หรือโฮสต์อยู่ภายในโดเมนของหนึ่งในสตริงเหล่านี้การทำธุรกรรมกับโหนดนั้นจะไม่ถูกพร็อกซี
โปรดสังเกตว่าhttp_proxy
ตัวสะกดเล็กเป็นตัวเดียวในตัวแปรเหล่านี้ บางไลบรารี / โปรแกรมค้นหาชื่อตัวพิมพ์เล็กของตัวแปรเหล่านี้ในขณะที่บางโปรแกรมค้นหาชื่อตัวพิมพ์ใหญ่ เพื่อความปลอดภัยควรกำหนดทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของแต่ละตัวแปร
ปัญหาอื่นก็คือคำอธิบายที่อ้างถึงว่าชื่อโฮสต์ถูกจับคู่กันอย่างไรNO_PROXY
ไม่แม่นยำและไม่ตอบคำถามต่อไปนี้:
- ค่าควรเป็นชื่อโดเมนแบบเต็ม (FQDN)ซึ่งลงท้ายด้วยจุดเช่นนั้น
foo.example.com.
หรือไม่?
- ควร
foo.example.com
ตรงกับเพียงแค่นี้หนึ่งโดเมนหรือควรก็ยังตรงกับโดเมนย่อยใด ๆ เช่นbar.foo.example.com
? ถ้าหลังควรแล้วก็ยังตรงกับโดเมนย่อยใด ๆ ในโดเมนย่อยใด ๆ เช่นbar.baz.foo.example.com
?
- เป็น
.foo.example.com
(จุดที่จุดเริ่มต้น) และถ้าเป็นเช่นนั้นแล้วสิ่งที่ควรจะตรงกับ?
- เครื่องหมายดอกจัน (
*
) ได้รับอนุญาตเป็นส่วนหนึ่งของค่า ( *.example.com
, *example.com
) และถ้าเป็นเช่นนั้นจะได้รับการปฏิบัติอย่างไร?
การขาดข้อกำหนดอย่างเป็นทางการนำไปสู่ความสับสนและข้อบกพร่อง ที่นี่มีการพูดถึงไลบรารีlibproxyซึ่งมีจุดมุ่งหมายเพื่อให้การสนับสนุนที่ถูกต้องและสอดคล้องสำหรับการกำหนดค่าพร็อกซี จากหน้าแรกของโครงการ:
libproxy มีอยู่เพื่อตอบคำถาม: เนื่องจากมีทรัพยากรเครือข่ายฉันจะเข้าถึงได้อย่างไร มันจัดการรายละเอียดทั้งหมดช่วยให้คุณสามารถกลับไปที่การเขียนโปรแกรม
อ่านเพิ่มเติม: