sân chơi nginx
(jvns.ca)<p>- Một playground cho phép tự do thay đổi cấu hình nginx để thử nghiệm <br />
→ nhập config và lệnh `curl`/`http`, rồi nhấn Run để thực thi<br />
→ hiển thị kết quả của lệnh đã chạy và log lỗi của nginx <br />
- Frontend Vue.js + backend Go (chỉ công khai mã máy chủ qua Gist)<br />
- Khi nhấn nút chạy, backend Go sẽ thực hiện các việc sau <br />
→ lưu file cấu hình thành file tạm<br />
→ tạo network namespace mới <br />
`ip netns add $RANDOM_NAMESPACE_NAME`<br />
→ chạy go-httpbin trên cổng 777<br />
→ khởi động nginx<br />
→ đợi 100ms cho đến khi nginx chạy đúng; nếu thất bại thì trả về log lỗi nginx<br />
→ chạy lệnh do người dùng nhập vào (kiểm tra xem có phải `curl` / `http` hay không)<br />
→ trả về đầu ra của request <br />
- Xử lý mọi request bằng một máy chủ dùng chung duy nhất <br />
<br />
- Cách tiếp cận về bảo mật: một chút isolation, một chút YOLO <br />
→ frontend được host trên CDN <br />
→ không dùng DB, chỉ dùng local storage của trình duyệt<br />
→ đặt mọi nginx trong network namespace riêng của nó, chặn không cho truy cập Internet <br />
→ dùng gói miễn phí của fly.io <br />
→ đưa vào FAQ để mọi người hành xử tử tế <br />
<br />
- Hiệu năng<br />
→ instance rất nhỏ (1 shared CPU, 256MB RAM)<br />
→ frontend ở trên CDN nên backend chỉ chạy khi thực sự được dùng<br />
→ mỗi request mất khoảng 400ms. Không tệ <br />
→ phiên bản Go của httpbin nhẹ hơn bản Python gốc <br />
→ hiệu năng frontend không quá tốt </p>
Chưa có bình luận nào.