nginx playground
(jvns.ca)- เพลย์กราวด์สำหรับทดสอบที่สามารถแก้ไขการตั้งค่า nginx ได้ตามต้องการ
→ ป้อน config และคำสั่ง curl/http แล้วกด Run เพื่อรัน
→ แสดงผลลัพธ์ของคำสั่งที่รันและ nginx error log
-
ฟรอนต์เอนด์ Vue.js + แบ็กเอนด์ Go (เปิดเผยเฉพาะโค้ดฝั่งเซิร์ฟเวอร์ผ่าน Gist)
-
เมื่อกดปุ่มรัน แบ็กเอนด์ Go จะทำสิ่งต่อไปนี้
→ บันทึกไฟล์ config เป็นไฟล์ temp
→ สร้าง network namespace ใหม่
ip netns add $RANDOM_NAMESPACE_NAME
→ รัน go-httpbin บนพอร์ต 777
→ เริ่ม nginx
→ รอ 100ms จนกว่า nginx จะเริ่มทำงานได้อย่างถูกต้อง ถ้าล้มเหลวจะส่งคืน nginx error log
→ รันคำสั่งที่ผู้ใช้ป้อน (ตรวจสอบว่าเป็น curl / http หรือไม่)
→ ส่งคืนเอาต์พุตของคำขอ
-
จัดการทุกคำขอด้วยเซิร์ฟเวอร์ที่ใช้ร่วมกันเพียงเครื่องเดียว
-
แนวทางด้านความปลอดภัย: แยกส่วนเล็กน้อย และ YOLO เล็กน้อย
→ ฟรอนต์เอนด์โฮสต์อยู่บน CDN
→ ไม่ใช้ DB ใช้เฉพาะ local storage ของเบราว์เซอร์
→ ให้ nginx แต่ละตัวอยู่ใน network namespace ของตัวเอง และปิดกั้นไม่ให้ออกอินเทอร์เน็ต
→ ใช้ free tier ของ fly.io
→ ใส่ไว้ใน FAQ ให้ทุกคนทำตัวดี ๆ ต่อกัน
- ประสิทธิภาพ
→ อินสแตนซ์ขนาดเล็กมาก (1 shared CPU, RAM 256MB)
→ ฟรอนต์เอนด์อยู่บน CDN ดังนั้นแบ็กเอนด์จะทำงานเฉพาะตอนใช้งานจริงเท่านั้น
→ หนึ่งคำขอใช้เวลาประมาณ 400ms ก็ถือว่าไม่เลว
→ httpbin เวอร์ชัน Go เบากว่าเวอร์ชัน Python ต้นฉบับ
→ ประสิทธิภาพฝั่งฟรอนต์เอนด์ไม่ค่อยดีนัก
ยังไม่มีความคิดเห็น