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-For | IP จริงของ Client |
X-Forwarded-Proto | Protocol ดั้งเดิม (https) |
X-Forwarded-Host | Hostname ดั้งเดิม |
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 ที่รู้จัก