Nginx thiếu gì mà Apache có?


11

Nginx được cho là hiệu quả tài nguyên hơn và dễ cấu hình hơn Apache. Một người bạn nói với tôi rằng "nó không thể làm một số thứ mà Apache có thể làm, nhưng dù sao tôi cũng không cần những thứ đó."

Tuy nhiên, tôi tò mò: Apache có thể làm những việc gì mà Nginx không thể làm được? Tôi không cần một danh sách đầy đủ, chỉ là một ý tưởng chung về các tình huống trong đó Apache sẽ là lựa chọn tốt hơn.

Câu trả lời:


9

Tôi nghĩ rằng phần lớn nhất vẫn còn thiếu từ Nginx là hỗ trợ WebDAV đầy đủ. Khá nhiều khía cạnh khác được bao phủ bởi lõi hoặc mô-đun của bên thứ 3.

Nginx không hỗ trợ những thứ như mod_php theo thiết kế, vì vậy tôi không chắc bạn có thể nói rằng Nginx đang thiếu những phần này. Giống như Nginx đang nói với bạn khá mạnh mẽ rằng sử dụng điều này là ngu ngốc.


+1 Trong khi tôi không đồng ý rằng mọi khả năng sử dụng mod_php và những thứ như thế là "ngu ngốc", tôi đồng ý với phần còn lại.
Chris S

Đây có phải là một nhận xét php-hater hoặc có một cái gì đó thực sự xấu về mod_php? Liên kết? Tôi hỏi vì gần như mọi thứ tôi có sử dụng mod_php .. và xin vui lòng, tôi không quan tâm bạn nghĩ gì tốt hơn, tôi chỉ muốn biết điều gì sai với mod_php
Safado

3
mod_php không liên quan gì đến PHP. Nó liên quan đến cách PHP tương tác với Apache. Vấn đề là khi bạn nhúng PHP vào Apache thì quy trình xử lý PHP và quy trình xử lý tệp hình ảnh 2kb là cùng một quy trình. Nếu máy khách cuối chậm thì quá trình rất tốn kém của bạn có thể phục vụ một hình ảnh nhỏ trong 2 giây, đó là thời gian không thể dành cho PHP.
Martin Fjordvald

+1 "Giống như Nginx đang nói với bạn khá mạnh mẽ rằng sử dụng điều này là ngu ngốc."

4

Apache có sẵn một số lượng lớn các mô-đun cho phép thực hiện một số tình huống triển khai không thể thực hiện được với Nginx.

Một ví dụ là mod_dav_svnđể lưu trữ Subversion qua HTTP. Nó chỉ có sẵn cho Apache. Các ví dụ đáng chú ý khác là những thứ như mod_perlhoặc mod_php. Mặc dù hầu hết các thiết lập truyền thống cũng có thể được thực hiện thông qua FCGI (hoặc WSGI hoặc hành khách), nhưng có một trình thông dịch thực tế đang xử lý có thể có lợi nếu bạn cần thực hiện các sơ đồ xác thực tùy chỉnh bên trong máy chủ web (như được thực hiện cho lưu trữ git hoặc svn với Redmine / ChiliProject).

Nói chung, bạn của bạn nói đúng: hầu hết các kịch bản triển khai phổ biến cũng có thể được giải quyết bằng nginx, nhưng Apache vẫn linh hoạt hơn nếu bạn phải xây dựng một số thứ "đặc biệt" hơn.


3

Phiên bản ngắn của câu chuyện là Apache có rất nhiều plugin và cộng đồng được xây dựng xung quanh nó. Nginx, chỉ mới xuất hiện trong một thời gian ngắn và do đó, nó chưa có cơ sở mã cộng đồng.

Khi mọi người hỏi tôi sự khác biệt là gì, Nginx là một con dao bít tết, nó tốt cho nhiều mục đích sử dụng và làm một số việc cực kỳ tốt. Apache là một con dao quân đội Thụy Sĩ, nó có rất nhiều tính năng khác nhau và tất cả chúng đều hoạt động tốt.


Tôi nghĩ rằng bạn có thể hơi lạc hậu về những gì Nginx có thể làm, trong một số lĩnh vực, nó linh hoạt hơn nhiều so với Apache. Thiếu proxy HTTP / 1.1 và WebDAV Tôi không thể nghĩ ra nhiều thứ còn thiếu.
Martin Fjordvald

@MartinFjordvald Có khá nhiều chức năng Nginx cố tình chọn không làm, bạn không thể nói họ "mất tích", nhưng bạn không thể cho rằng Nginx có thể làm mọi thứ mà Apache có thể. Đó là một sự đánh đổi và tôi hoan nghênh Nginx vì những lựa chọn mà họ đã đưa ra.
Chris S

Ngay từ khi nhận xét ban đầu, proxy HTTP / 1.1 của tôi đã được hỗ trợ, vì vậy chúng tôi không hỗ trợ lưu trữ webdav và svn. Đó là nếu chúng ta không xem xét các vấn đề như các mô-đun được liên kết động, điều đó đúng là nginx đã quyết định không thực hiện cho đến nay.
Martin Fjordvald

1

Nhiều mô-đun và một cơ sở cài đặt ginourmous, để bắt đầu. Nhưng đó không phải là chính xác những gì Apache mà bạn nên xem, đó là những gì Apache làm : nó hoạt động tốt hơn để phục vụ nội dung động như PHP, Python, Perl, Java, v.v.

Tất nhiên bạn cũng có thể làm điều đó với Nginx (nhưng IMHO hơi hack), nhưng các giải pháp được chứng minh và trưởng thành hơn khi chạy trên Apache so với NginX, đến lượt nó tốt hơn Apache khi phục vụ tải cao và tuyệt vời viết lại / proxy ngược.

Đối với mỗi công việc, công cụ phù hợp!


Có lẽ điều này là đúng trước năm 2008 khi tôi lần đầu tiên triển khai nginx trên một máy chủ web sản xuất, nhưng dường như không phải bây giờ. Tôi rất muốn thấy một bản mở rộng lý do tại sao bạn tin rằng mô hình bao gồm các trình thông dịch trong máy chủ web của Apache là tốt hơn.
Michael Hampton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.