สำหรับปลายทาง HTTP ให้ตั้ง http_proxy เป็นตัวพิมพ์เล็ก curl ตั้งใจไม่ใช้ HTTP_PROXY ที่เป็นตัวพิมพ์ใหญ่ ในเชลล์ POSIX:

http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/

การกำหนดค่าเหล่านี้มีผลเฉพาะคำสั่งที่ตามมาทันทีเท่านั้น แทนที่ที่อยู่ตัวรับฟังในตัวอย่างด้วยพร็อกซีของคุณ หากต้องการเปรียบเทียบจุดปลายสาธารณะ ให้เลือกจากรายการพร็อกซี HTTP ตัวแปร https_proxy เลือกเส้นทางสำหรับปลายทาง HTTPS ค่าที่ใช้ http:// ยังคงหมายถึงพร็อกซี HTTP ทั่วไปที่สร้างอุโมงค์ไปยังปลายทางได้ PowerShell และเชลล์คำสั่ง Windows ใช้ไวยากรณ์กำหนดค่าที่ต่างกัน

ทำไมการเขียนด้วยตัวพิมพ์ใหญ่รูปแบบนี้จึงอันตราย

สภาพแวดล้อม CGI อาจแปลงส่วนหัวของคำขอขาเข้าเป็นตัวแปร HTTP_ แบบตัวพิมพ์ใหญ่ ดังนั้นส่วนหัวชื่อ Proxy อาจกลายเป็น HTTP_PROXY การเชื่อถือค่านี้เป็นการตั้งค่าการเชื่อมต่อขาออกจะเปิดให้ข้อมูลคำขอเลือกพร็อกซีได้ ข้อกำหนดตัวพิมพ์เล็กของ curl เลี่ยงการจับคู่นี้ ข้อยกเว้นไม่ได้ใช้แบบเดียวกันทั้งหมดกับ HTTPS และตัวแปรของโปรโตคอลอื่น

หากเปลี่ยนตัวแปรแล้วเส้นทางไม่เปลี่ยน

มองหาตัวแปรเฉพาะโปรโตคอลก่อน แล้วจึงดูตัวเลือกสำรอง ALL_PROXY กฎ NO_PROXY ที่ตรงกันอาจข้ามพร็อกซีได้ รูปแบบตัวพิมพ์เล็กและนิยามที่แข่งขันกันก็มีผล ลูปนี้สำหรับเชลล์แบบ Unix รายงานเพียงว่ามีตัวแปรอยู่ โดยไม่พิมพ์ค่าที่อาจมีข้อมูลยืนยันตัวตน:

for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
  if printenv "$name" >/dev/null; then
    printf '%s is set\n' "$name"
  fi
done

ตรวจนิยามที่แสดงบนเครื่องของคุณ หากนิยามใดกลับมาอีก ให้ตรวจการตั้งค่าเชลล์ที่เริ่มกระบวนการ บริการ IDE คอนเทนเนอร์ หรือ CI การมีอยู่ระบุเพียงแหล่งค่าที่เป็นไปได้ ไม่ได้บอกว่าค่าใดมีลำดับความสำคัญเหนือกว่า

หากต้องการแยกคำขอหนึ่งออกจากตัวเลือกพร็อกซีเหล่านี้ ให้ระบุทั้งจุดปลายและรายการข้ามพร็อกซีที่ว่างเปล่า:

curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/

สำหรับเปรียบเทียบด้วยการเชื่อมต่อโดยตรงเมื่อได้รับอนุญาต:

curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/

คำสั่งเหล่านี้ช่วยแยกเส้นทางที่สืบทอดมาจากปัญหาการเชื่อมต่อ อ่านผลทดสอบพร็อกซีทีละขั้นก่อนเปลี่ยนการตั้งค่าสภาพแวดล้อมเพิ่มเติม ใช้กฎตัวแปรของ curl กับ curl รันไทม์ของแอปพลิเคชันเองอาจค้นพบและรวมการตั้งค่าพร็อกซีด้วยวิธีอื่น

บทความที่เกี่ยวข้อง