Nginx vs Apache là proxy ngược, nên chọn cái nào


36

loại câu hỏi này có thể đã được hỏi ở đây nhưng tôi không thể tìm thấy câu hỏi nào thực sự phù hợp với câu hỏi của tôi. Nghe nói hiệu năng nginx khá ấn tượng, nhưng Apache có nhiều tài liệu, cộng đồng (đọc: chuyên gia) để được giúp đỡ

Bây giờ những gì tôi muốn biết, làm thế nào cả hai máy chủ web so sánh về hiệu suất, mức độ dễ dàng của cấu hình, mức độ tùy chỉnh, v.v. NHƯ máy chủ REVERSE PROXY trong môi trường vps ??

Tôi vẫn đang cân nhắc giữa hai ứng dụng cho một ứng dụng web ruby ​​(không phải ROR) được phục vụ với mỏng (một trong những máy chủ web ruby).
Câu trả lời cụ thể sẽ được nhiều đánh giá cao. Câu trả lời chung không chạm vào phần ruby ​​là được. Tôi vẫn còn không quản trị máy chủ web.


tnx cho câu trả lời của martin và webdestroya, bây giờ tôi đang nghiêng về nginx
mhd

Sẽ không có ý nghĩa hơn khi đi với một proxy ngược được thiết kế đặc biệt như véc ni?
ptman

Câu trả lời:


31

Tôi muốn đưa điều này vào một bình luận vì tôi đồng ý với điểm quan trọng nhất của câu trả lời webdestroyas, nhưng nó đã hơi lâu.

Bạn đang ở trong môi trường VPS, điều này có nghĩa là rất có thể bạn sẽ bị thiếu RAM. Vì lý do này một mình, bạn sẽ muốn Nginx vì dung lượng bộ nhớ của nó nhỏ hơn Apaches.

Ngoài ra tôi không đồng ý với một số đối số được đề cập.

Tính dễ dàng của Cấu hình:
Nginx không khó hơn Apache. Nó khác nhau. Nếu bạn đã quen với Apache thì việc thay đổi sẽ luôn khó khăn hơn, điều đó không có nghĩa là bản thân kiểu cấu hình khó hơn. Tôi đã di chuyển hoàn toàn từ Apache sang Nginx hơn một năm trước và hôm nay tôi sẽ phải vật lộn để cấu hình một máy chủ Apache trong khi tôi thấy Nginx rất dễ cấu hình.

Đối với Ruby:
Nginx có Hành khách, tuy nhiên, tôi thường thấy nó được mô tả là phương thức kém hơn để kết nối với Ruby. Tôi không phải là lập trình viên Ruby nên tôi không thể xác minh điều này nhưng tôi thường thấy Unicorn và Thin được đề cập là những lựa chọn thay thế tốt hơn.

Kết luận:
Nginx đã được tạo thành một proxy ngược. Ban đầu, tất cả những gì nó làm là phục vụ các tệp tĩnh và proxy ngược cho máy chủ phụ trợ thông qua HTTP / 1.0. Kể từ đó fastcgi, cân bằng tải và nhiều tính năng khác đã được thêm vào, nhưng mục đích thiết kế ban đầu của nó là phục vụ các tệp tĩnh và proxy ngược. Và nó làm điều này thực sự tốt.

Apache, trái lại là một máy chủ web có mục đích chung. Tôi không nghi ngờ rằng nó có thể đảo ngược proxy hoàn toàn tốt, nhưng nó không được thiết kế để có dung lượng bộ nhớ tối thiểu và kết quả là nó đòi hỏi nhiều tài nguyên hơn Nginx, điều đó có nghĩa là đối số môi trường VPS ban đầu của tôi xuất hiện.


+1 để làm rõ.
John Gardeniers

Tôi sẽ đi xa hơn để giới thiệu nó như là máy chủ web duy nhất của bạn. xem ý kiến ​​của tôi serverfault.com/questions/133481/ từ <- tại đây. Tôi đang sử dụng nó như là máy chủ web duy nhất trên VPS của mình và tôi đã nhận được những người dùng khác trên tàu với FastCGI cho các ứng dụng PHP / CGI của họ.
Jason

Jason Tôi đã sử dụng nó như một máy chủ web duy nhất của tôi trong hơn một năm nay và nó xử lý hàng triệu trang tải mỗi ngày. Tôi hoàn toàn đồng ý với đề nghị của bạn! :)
Martin Fjordvald

8

Hiệu suất:
NGinX. Máy chủ này được biết đến là một trong những máy chủ web hoạt động tốt nhất và được sử dụng bởi nhiều công ty khác nhau (Đáng chú ý, MediaTemple)

Tính dễ dàng của Cấu hình:
Apache. Cấu hình của Apache rất đơn giản và thực sự mạnh mẽ. Nginx rất mạnh, nhưng có thể rất khó hiểu, vì nó có vẻ giống ngôn ngữ lập trình hơn là tệp cấu hình.

Mức độ tùy biến:
Apache. Apache có hàng tấn mod và các plugin khác được viết cho nó. Trong khi Nginx vẫn có các plugin được tạo cho nó, tôi nghĩ rằng Apache có nhiều hơn nhiều so với Nginx.

Đối với Ruby:
Tôi biết Nginx có thể được sử dụng như một bộ cân bằng tải mạnh mẽ với Mongrel / webrick. Tuy nhiên, Apache có Phusion / Hành khách giúp tích hợp tốt hơn.

Người chiến thắng Proxy ngược:
NGinX


2
Tôi quan tâm, không tranh cãi. Tại sao Nginx là người chiến thắng cho proxy ngược? Phần còn lại của câu trả lời của bạn không thực sự làm cho người này nổi bật so với người khác. Nếu bất cứ điều gì nó có xu hướng ủng hộ Apache.
John Gardeniers

1
Vâng, bởi vì đối với hầu hết các phần, bạn muốn một proxy ngược do tải cao. Điều đó có nghĩa là hiệu suất có lẽ là vấn đề lớn nhất, trong trường hợp đó Nginx là người chiến thắng, đó là lý do tại sao tôi chọn nó. Là một nhà phát triển, tôi yêu thích apache, nhưng từ quan điểm "làm thế nào tôi có thể đạt được hiệu suất cao nhất từ ​​máy chủ web này", tôi sẽ đi với Nginx
Mitch Dempsey

8

Nginx là dựa trên sự kiện, trong khi apache là dựa trên quá trình. Dưới tải trọng cao, điều này tạo ra tất cả sự khác biệt trên thế giới ... Apache phải rẽ nhánh hoặc bắt đầu một luồng mới cho mỗi kết nối, trong khi nginx thì không. Sự khác biệt này thể hiện chủ yếu ở việc sử dụng bộ nhớ, mà còn về thời gian phản hồi của người dùng và các số liệu hiệu suất khác. Nginx có thể xử lý hàng chục ngàn kết nối giữ HTTP đồng thời trên phần cứng hiện đại. Apache sẽ sử dụng 1-2 MB stack cho mỗi kết nối, do đó, khi thực hiện phép toán mà bạn thấy rằng bạn chỉ có thể xử lý đồng thời vài trăm hoặc có thể một nghìn kết nối mà không bắt đầu trao đổi.

Chúng tôi sử dụng nginx trước Apache và IIS trong môi trường của chúng tôi như là một proxy cân bằng tải và bộ đệm, và không thể hạnh phúc hơn. Chúng tôi sử dụng hai hộp nginx nhỏ thay cho một cặp thiết bị F5 được thuê rất đắt tiền và các trang web của chúng tôi nhanh hơn nhiều về cả thời gian phản hồi và cảm nhận.


1

Tôi đã ở trong tình trạng khó xử giống như bạn khoảng hai tuần trước.

Để cung cấp cho bạn một câu trả lời thực sự ngắn gọn: Từ nghiên cứu của tôi, nginx rất nhanh và thân thiện với tài nguyên, nhưng nó chỉ được che giấu để đảo ngược các tệp tĩnh proxy. Phần còn lại là các giải pháp mà bạn phải cấu hình hoặc viết theo cách của mình.

AFAIK nginx không có tệp htaccess vì vậy Bạn phải tìm đường cho mình nếu phụ thuộc vào tính năng đó.

AFAIK mọi thứ cần thiết đều hoạt động và tôi đã xem hướng dẫn.

Tôi sẽ đi với nginx với thiết lập thử nghiệm và định hình của tôi. Tôi có một ứng dụng LAMP điển hình.

Tôi đã đọc được rằng có những người đảo ngược proxy và phục vụ các tệp tĩnh từ nginx và chuyển mọi thứ khác như PHP sang một cá thể Apache đang chạy. Họ yêu cầu một sự đánh đổi tốt. Tôi không có dữ liệu hiệu suất về điều đó, nhưng bạn có thể muốn biết.


2
Vô hiệu hóa ghi đè htaccess trên apache vì lý do hiệu suất là khá phổ biến, hỗ trợ một tính năng như vậy trong một máy chủ được thiết kế cho hiệu suất cao sẽ không có ý nghĩa nhiều.
theotherreceive

Cảm ơn đã thêm tuyên bố đó. OP không phải là quản trị viên chuyên nghiệp, vì vậy chúng tôi cần phải rõ ràng.
deploymonkey

1

Tôi đã gặp vấn đề nghiêm trọng với mod_proxy của Apache trên nhiều nền tảng khác nhau trong nhiều môi trường khác nhau trong vài năm qua. Thỉnh thoảng, nó sẽ ngừng hoạt động và cách chữa trị duy nhất dường như là khởi động lại máy chủ Apache.

Cá nhân, tôi không được hỏi về nginx so với Apache, nhưng mà nginx vs lighttpd - và đó là một cuộc gọi khó khăn hơn nhiều!


Đối số hợp lệ, nhưng lần trước tôi đã kiểm tra, lighttpd vẫn còn các lỗi tồn tại lâu và đã bị từ chối vì rò rỉ bộ nhớ. Nó được khuyên chống lại việc triển khai sản xuất bởi quản trị viên. Điều này đã thay đổi?
deploymonkey

Nó có hãy cẩn thận, chắc chắn (đặc biệt là nơi phục vụ các tập tin rất lớn), nhưng nó ổn định hơn đáng kể so với Apache như là một proxy - Tôi đã không có vấn đề thực sự ở một số triển khai trong sáu tháng qua
Mo.

Tôi đã viết tắt lighttpd từ danh sách ứng cử viên vì một số lý do bị lãng quên :)
mhd
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.