HTTP Tunnel

การสร้างและใช้งาน HTTP Tunnel สำหรับเว็บแอปพลิเคชัน

HTTP Tunnel

HTTP Tunnel เปิดเผย Web Server ในเครื่องสู่อินเทอร์เน็ตพร้อม HTTPS

การใช้งานพื้นฐาน

# เริ่ม Local Server ที่ Port 3000 จากนั้น:
tunnel http 3000

Server ในเครื่องของคุณสามารถเข้าถึงได้ที่ https://random.your-domain.com

Subdomain ที่กำหนดเอง

ขอ Subdomain เฉพาะ:

tunnel http 3000 --subdomain myapp
# ผลลัพธ์: https://myapp.your-domain.com

Web Inspector

Debug Request ที่เข้ามาด้วย Inspector ในตัว:

tunnel http 3000 --inspect

เปิด http://127.0.0.1:4040 เพื่อดู:

  • Request Headers
  • Request Body
  • Response Status และ Headers
  • Response Body
  • ข้อมูลเวลา
เคล็ดลับ

Inspector มีประโยชน์มากสำหรับ Debug การรวม Webhook จากบริการเช่น Stripe, GitHub ฯลฯ

การกรอง IP

อนุญาตเฉพาะ IP ที่ระบุ

อนุญาต Request จาก IP ที่กำหนดเท่านั้น:

tunnel http 3000 --allow-ip 192.168.1.100
tunnel http 3000 --allow-ip 192.168.1.0/24  # รูปแบบ CIDR
tunnel http 3000 --allow-ip 10.0.0.1 --allow-ip 10.0.0.2  # หลาย IP

บล็อก IP ที่ระบุ

บล็อก IP บางตัวในขณะที่อนุญาต IP อื่น:

tunnel http 3000 --deny-ip 5.6.7.8

พฤติกรรม HTTPS

HTTP Tunnel ทั้งหมดให้บริการผ่าน HTTPS:

  • Request ไปยัง http:// ถูก Redirect ไปยัง https://
  • SSL Certificate ที่ถูกต้องให้โดยอัตโนมัติ
  • Server ในเครื่องของคุณรับ HTTP ธรรมดา

Header ที่ส่งต่อ

Tunnel ส่งต่อ Header เหล่านี้ไปยัง Server ในเครื่องของคุณ:

Headerคำอธิบาย
X-Forwarded-ForIP จริงของ Client
X-Forwarded-ProtoProtocol ดั้งเดิม (https)
X-Forwarded-HostHostname ดั้งเดิม
X-Request-Idตัวระบุ Request ที่ไม่ซ้ำ

รองรับ WebSocket

การเชื่อมต่อ WebSocket ทำงานโดยอัตโนมัติ:

// Client
const ws = new WebSocket('wss://myapp.your-domain.com/socket');

// Server ที่ localhost:3000
wss.on('connection', (ws) => {
  console.log('Client connected');
});

แนวทางปฏิบัติที่ดี

เคล็ดลับ

demo-client-a, api-staging, webhook-test - ไม่ใช่แค่ชื่อสุ่ม

เคล็ดลับ

เมื่อรวมกับบริการภายนอก ใช้ --inspect เสมอเพื่อดูสิ่งที่ถูกส่งมา

เคล็ดลับ

เมื่อเปิดเผยเครื่องมือภายใน จำกัดการเข้าถึงเฉพาะ IP ที่รู้จัก