Cloud Tunneling เปิดเครื่อง Dev สู่โลกภายนอก
สมมติเราอยากรัน Web Server ที่เครื่องของเรา เช่น เพื่อทดสอบ API ที่ต้องใช้ Webhook เช่น Facebook Messaging Platform แต่ติดเงื่อนไขต่าง ๆ เช่น
- ไม่มีเครื่องบน Cloud ที่มี Public IP
- เครื่องที่ใช้ทำงานอยู่หลัง Firewall หรือ NAT
ทางออกคือ tunnel ออกไป แต่ใครจะเป็นฝั่งปลายทางที่จะรับ HTTP/HTTPS request แล้วส่งต่อมาให้เราหล่ะ? ngrok เป็นทางเลือกที่ดีครับ โดยเจ้า ngrok จะทำการ เชื่อมระหว่าง ngrok server กับเครื่องที่เราทำงานโดยตรง เช่นถ้าเราต้องการ run NodeJS app port 5000 ด้วย HTTPS เท่านั้น ก็สั่ง
ngrok http -bind-tls=true localhost:5000
แล้วเราจะได้ Tunnel URL มาเช่น https://b1234as.ngrok.io เราก็สามารถเอาเจ้า URL ไปลงทะเบียนกับ webhook ได้ เมื่อมี HTTP/HTTPS request ที่ยิงมาจาก webhook เราก็จะได้รับเหมือน web request ทั่วไป
Downsides
วิธีนี้ก็มีข้อเสียเหมือนกัน คือ
- ข้อมูลของคุณวิ่งผ่าน ngrok ทั้งหมด ต้องไม่ลืมว่านี่ไม่ใช่แค่ redirect แต่เป็น tunnel เลยแต่การนี้คือเพื่อ dev พอจะขึ้น production ก็ต้องเปิด public IP ในที่สุด
- URL เปลี่ยนทุกครั้งที่ run ngrok ทำให้ต้องไล่ update ทะเบียน webhook แน่นอนว่า คุณจ่าย $5 ต่อเดือนเพื่อจอง domain ได้
Comments