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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น