TCP relay ภายในเครื่องสามารถพารายงาน HTTPS ของ Monit ผ่าน SOCKS โดยไม่ต้องเป็นปลายทาง TLS เสียเอง การกำหนดเส้นทางต้องรักษาชื่อของตัวเก็บข้อมูลสำหรับ HTTPS ไว้ และมอบที่อยู่ปลายทางจริงให้กับ relay

สมมติว่าตัวเก็บข้อมูลคือ collector.example ที่ 203.0.113.40:443 ในการจัดวางที่ใช้ socat อยู่แล้ว relay จะมีรูปแบบนี้:

socat TCP4-LISTEN:9900,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4:socks.example:203.0.113.40:443,socksport=1080

ที่นี่ 127.0.0.1:9900 รับการเชื่อมต่อภายในของ Monit socks.example:1080 คือเซิร์ฟเวอร์ SOCKS4 ซึ่งถูกขอให้เชื่อมต่อไปยังที่อยู่จริงของตัวเก็บข้อมูลที่พอร์ต 443 แทนที่ที่อยู่ในเอกสารทั้งหมดด้วยค่าของการติดตั้งใช้งาน

แปลงชื่อของตัวเก็บข้อมูลภายในเครื่องไปยังตัวรับฟังนั้น และเก็บชื่อไว้ใน monitrc:

127.0.0.1 collector.example

set mmonit https://monit:[email protected]:9900/collector

บรรทัดแรกคือรายการในไฟล์ hosts ส่วนบรรทัดที่สองคือการกำหนดค่า Monit ใช้ข้อมูลรับรองจริงของตัวเก็บข้อมูลพร้อมการเข้ารหัส URL ที่จำเป็น การแมปในไฟล์ hosts ยังส่งผลต่อแอปพลิเคชันอื่นที่ใช้ชื่อนั้นบนเครื่องด้วย

การจับมือ HTTPS ยังเป็นของตัวเก็บข้อมูล ดังนั้น จึงควรรักษาชื่อโฮสต์ไว้ และนโยบายการตรวจสอบใบรับรองตามที่ตั้งใจ การเปลี่ยน URL เป็น localhost จะเปลี่ยนตัวตนที่ Monit ขอให้ตรวจสอบ

relay ใช้ IP จริงของตัวเก็บข้อมูลโดยเจตนา แทนที่จะค้นหาชื่อที่ถูกแมปใหม่ไปยัง loopback อัปเดต IP นั้นเมื่อที่อยู่ของตัวเก็บข้อมูลเปลี่ยน ทำให้ตัวรับฟังพร้อมใช้งานเป็นส่วนหนึ่งของเส้นทางการรายงาน fork จัดการแยกต่างหากสำหรับการเชื่อมต่อ relay ที่รับเข้ามา

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