Câu trả lời:
Có một số lý do chính đáng để gắn một máy chủ web khác trước Node.js:
Tôi sẽ báo trước điểm đạn thứ hai bằng cách nói rằng có lẽ bạn nên phục vụ các tệp tĩnh của mình thông qua CDN hoặc từ phía sau máy chủ bộ đệm như Varnish. Nếu bạn đang làm điều này, điều đó không thực sự quan trọng nếu nguồn gốc là Node hoặc Nginx hoặc Apache.
Hãy cẩn thận với nginx cụ thể: nếu bạn đang sử dụng websockets, hãy đảm bảo sử dụng phiên bản nginx gần đây (> = 1.3.13), vì nó chỉ thêm hỗ trợ để nâng cấp kết nối để sử dụng websockets.
:80không chạy nút gốc bằng cách sử dụng authbind: thomashunter.name/blog/USE-authbind-with-node-js
Chỉ cần thêm một lý do nữa cho câu trả lời của pauljz, tôi sử dụng máy chủ ngoại vi để nó có thể phục vụ 502 trang lỗi khi tôi khởi động lại máy chủ phụ trợ hoặc vì lý do nào đó. Điều này cho phép người dùng của bạn không bao giờ gặp lỗi về việc không thể thiết lập kết nối.
Tôi tin rằng việc sử dụng Node để phục vụ các tệp tĩnh là tốt trong mọi trường hợp miễn là bạn biết bạn đang làm gì . Đây chắc chắn là một mô hình mới để sử dụng máy chủ ứng dụng để phục vụ các tệp tĩnh vì rất nhiều công nghệ cạnh tranh (mọi?) (PHP, Ruby, Python, v.v.) yêu cầu máy chủ web như HTTPD hoặc Nginx trước máy chủ ứng dụng .
Mọi lý do khách quan mà tôi từng đọc chống lại việc phục vụ các tệp tĩnh với Node đều xoay quanh ý tưởng sử dụng những gì bạn biết rõ nhất hoặc sử dụng những gì được coi là được kiểm tra tốt hơn / ổn định hơn. Đây là những lý do rất hợp lệ trên thực tế, nhưng ít liên quan đến kỹ thuật.
Trừ khi bạn tìm thấy một tính năng có thể có với một máy chủ web cổ điển không thể có với Node (và tôi nghi ngờ bạn sẽ làm thế), hãy chọn những gì bạn biết rõ nhất hoặc những gì bạn thích làm việc với cả hai cách tiếp cận đều tốt.
Đối với Nginx vs Apache - họ sẽ "chơi" với Node giống nhau. Bạn nên so sánh chúng mà không cần quan tâm đến Node.
systemd, pm2vv Vì vậy, có mặt được, chưa và người dùng nên chọn chất độc của họ, có thể nói .
express.staticsẽ xử lý ETags và tiêu đề kiểm soát bộ đệm tốt.