Có nên sử dụng traefik và nhiều nginx container
Các anh/chị cho em hỏi nếu theo mô hình bên dưới cứ 1 container lại chạy 1 nginx thì server có bị nặng hơn là chỉ sử dụng 1 nginx ở ngoài cũng thay cho traefik không ạ
1 CÂU TRẢ LỜI
OK. mình xin phép giải đáp luôn vì cái này tương tự cái mình gặp phải. Đúng ra hệ thống của bạn không cần nginx cũng được vì mình thấy con Traefik kia cũng đủ vai trò trong việc cân bằng tải và đưa port TCP của ứng dụng thành port HTTP rồi. Nhưng nginx ở đây sẽ có nhiều tác dụng hơn so với việc không dùng. nginx khiến server có thể nặng hơn, mà tốc độ load còn cải thiện cơ :v Bởi nginx cũng đóng vai trò cache khá ngon. Có lợi cho việc nén file các thứ. Và triển khai như kia thì PHP của bạn có thể vào cluster mode, tức ko chỉ 1 node PHP chạy kết nối với 1 cục PostgresSQL mà là 2-5 node(thường thế) kết nối. Hay nói cách khác: 3 server bạn đang chạy 3 cục PHP thì giờ thành 3 server chạy 6-15 node PHP. Availability cao hơn hẳn đúng không?
Anh cho em hỏi chỗ này ạ:
Đúng ra hệ thống của bạn không cần nginx cũng được vì mình thấy con Traefik kia cũng đủ vai trò trong việc cân bằng tải và đưa port TCP của ứng dụng thành port HTTP rồi
Có thể dùng trực tiếp Traefik + php mà không cần thông qua 1 thằng webserver được à anh
nginx ở đây chưa rõ vai trò. Khả năng cao là host Single page app. Nếu thế thì ko bỏ đi đc.
@refacore vì em có dùng php ở trong nên dùng nginx làm webserver đứng trước á bác. Vì traefik không dùng trực tiếp với php được, hoặc em chưa tìm được cấu hình đúng![😦](https://twemoji.maxcdn.com/v/14.0.2/72x72/1f626.png)
Hiện tại mô hình mình đang sử dụng cũng giống bạn, khác ở chỗ mình dùng Apache thay cho Nginx. Theo kiến thức nông cạn của mình, Traefik KHÔNG dùng trực tiếp với php, tính đến thời điểm mình bình luận thì Chưa có giải pháp cho vấn đề này. Traefik hoạt động như Proxy, minh chứng là cái tên đầy của của Traefik là "Traefik proxy" nó không phải là Webserver🫢. Nên mình nghĩ là bạn đã cấu hình đúng. Nhưng nếu giải quyết vấn đề này, hãy thử dùng cách sau: Như bạn đã biết "artisan serv" của laravel sẽ start 1 server, sau đó ta chỉ cần expose ra cho Traefik hứng và proxy ra ngoài (nhưng artisan serve chỉ nên dùng ở môi trường DEV phải không?) vì thế hãy tìm một library php có chức năng tương tự và đảm bảo đủ an toàn để chạy cho môi trường Prod, mình thấy cũng có khá nhiều library hỗ trợ. Nhưng riêng cá nhân mình thấy sử dụng mô hình này để tận dụng những webserver có sẵn (nginx, apache) chỉ tốn thêm miếng dung lượng lưu trữ thôi chứ chất lượng thì chỉ có tốt và tốt hơn thôi. Cho dù tốn thêm vài chục vài hoặc trăm millisecond để đảm bảo sự an toàn và thông suốt cho hệ thống là hoàn toàn hợp lí.
@andyle1194 Em cảm ơn anh nhiều ạ