Sự khác biệt giữa các gói lõi, đầy đủ, bổ sung và ánh sáng cho nginx là gì?


72

nginxtrên Ubuntu là một gói ảo được cung cấp bởi một trong năm gói từ kho chính thức (ít nhất là vào ngày 14.04, mặc định là nginx-core, tôi tin):

$ apt-cache depends nginx | tail -n+2 | cut -d: -f 2 | sort -u
 nginx-core
 nginx-extras
 nginx-full
 nginx-light
 nginx-naxsi

Sự khác biệt giữa các gói này và các trường hợp sử dụng được đề nghị cho chúng là gì?

Hơi cũ này trang Debian Wiki có một so sánh tính năng giữa extras, full, lightnaxsi, nhưng không đề cập đến được làm bằng core. Bao nhiêu trong số đó đã thay đổi trong 14.04?


thứ cấp Theo tôi được biết, nginxkhông hỗ trợ runtime cho phép các module như Apache có, như vậy sẽ cài đặt nginx-extrashiệu suất tác động?


1
Ai đó dường như đã thực hiện một phiên bản gần đây hơn của biểu đồ so sánh tính năng và chia sẻ nó trên tài liệu của Google: docs.google.com.vn/s Lansheet / Kẻ
Steven K

1
@StevenKath lưu ý rằng tài liệu THAT chỉ dựa trên Debian. Nó không chạm vào lõi nginx và không bao gồm các thay đổi Không ổn định sẽ loại bỏ hương vị naxsi (vì nó không tầm thường để duy trì).
Thomas Ward

Câu trả lời:


99

Trong khi câu trả lời của Steven chạm vào các điểm chính và tóm tắt rất cơ bản về từng hương vị là gì, tôi sẽ cung cấp cho bạn một mô tả lớn hơn về sự khác biệt, khi tôi làm việc trên bao bì khá nhiều và các bộ mô-đun rất khác nhau trong mỗi là hoàn toàn quan trọng cho một câu trả lời tốt. Các mô tả cơ bản không làm nhiều công lý để so sánh. (Ngoài ra, danh tiếng của Steven trích dẫn blog cũ của tôi (và thậm chí gọi tôi là 'người duy trì'. Tôi có ý định chuyển bài nginx-is-to-to-main sang blog mới hơn của tôi, nhưng tôi không có cơ hội .)

Cũng lưu ý rằng các gói mới nhất cho máy chủ web NGINX có sẵn trong PPIN NGINX, được duy trì bởi chính tôi, gần như hoàn toàn dựa trên Debian. ( PPA ổn định (1.6.2 tại bài đăng này); PPA chính (1.7.7 tại bài đăng này, với 1.7.8 dự kiến ​​sẽ hạ cánh vào ngày 4 tháng 12 năm 2014))


Các hương vị khác nhau của nginx:

Các hương vị khác nhau đều là cùng một phiên bản nginx, tuy nhiên các hương vị đã được các nhà bảo trì gói Debian quyết định để cung cấp các bộ tính năng khác nhau nginx-extrascũng như tối thiểu và bộ chức năng 'đầy đủ' hiệu quả nhất về tính năng máy chủ web có xu hướng đã được sử dụng trong các trang web. Lý do chính xác mà một tính năng được chọn so với một tính năng khác không được biết đến với tôi, tuy nhiên trong cuộc thảo luận bổ sung với một trong những người duy trì Debian trên IRC, một tuyên bố đã được đưa ra khẳng định đánh giá ban đầu của tôi, rằng mỗi biến thể được dự định là một bộ tính năng khác nhau cho một trường hợp sử dụng khác - lightcho một bộ tính năng nhẹ đáp ứng tối thiểu lưu trữ trang web, fullcho một bộ tính năng đầy đủ hơn mà không bao gồm bất kỳ tính năng bổ sung nào nặng hơn vàextrasđối với hầu hết mọi thứ có trong gói có thể có trong Ubuntu. naxsi, trước ngày 15.04, là biến thể Naxsi đặc biệt chỉ có tối thiểu các mô-đun trong đó, vì naxsi có thể khá tốn tài nguyên.

Giả sử, theo một trong những người duy trì Debian của NGINX, người thường xuyên phối hợp với NGINX ngược dòng trong một cuộc trò chuyện riêng tư mà hiện tại tôi không thể đăng nhật ký, NGINX 2.x sẽ có hỗ trợ mô-đun có thể tải. Trong trường hợp đó, light, full, và extrassẽ trở thành metapackages đó kêu gọi các gói cá nhân có chứa mỗi mô-đun. Tuy nhiên, ngày này trở thành trường hợp không được biết, cũng như mô-đun nào sẽ thực sự có khả năng thực hiện việc này.

Hiện tại, nginxgói ảo được thiết kế để chỉ cài đặt một trong các phiên bản có sẵn. Theo mặc định, như nginx-corelà chính và chúng tôi sẽ thích nếu các cá nhân sử dụng nó nhiều hơn, nginx-corelà mục đầu tiên được xem và thử cài đặt trong gói ảo. (Tuy nhiên, nginxgói có thể dựa vào bất kỳ một trong những hương vị của nginx, và chủ yếu là ở đó để giúp việc cài đặt dễ dàng hơn một chút cho những người không cần bất kỳ sở thích hương vị cụ thể nào)

Phân tích chi tiết với các mô-đun cụ thể có sẵn trong mỗi biến thể (dựa trên tệp Vividdebian/controltệp Trustydebian/control (vì các gói Naxsi đã bị xóa trong Vivid)) có sẵn bên dưới. Lưu ý rằng điều này không phản ánh những thay đổi cập nhật nhất trong Ubuntu và bạn nên tham khảo các mô tả gói đó để đảm bảo rằng bạn đã cập nhật, thông tin chính xác :

  • nginx-corelà hương vị duy nhất trong phần Chính của Kho lưu trữ Ubuntu, kể từ ngày 14.04 và chỉ tồn tại trong kho Ubuntu (và không có trong PPAs hoặc Debian, và sẽ không được đưa vào Debian bao giờ). Nó thực sự giống hệt với nginx-fullhương vị, nhưng không chứa bất kỳ mô-đun bên thứ ba nào. Lý do đằng sau việc sử dụngnginx-fullvì cơ sở của biến thể này là chúng tôi muốn cung cấp một tập hợp các mô-đun lõi tương đối đầy đủ trong các nhị phân được xây dựng, đồng thời giữ các mô-đun của bên thứ ba cùng một lúc. Như vậy, nó không chứa bất kỳ mô-đun nào của bên thứ ba, vì Nhóm Bảo mật đã xem xét mã và thấy rằng các mô-đun của bên thứ ba có các kiểu mã hóa khác nhau không được hỗ trợ độc đáo như bao gồm nginx-tarball các mô-đun (điều này được thảo luận sâu hơn trong lỗi Báo cáo / Yêu cầu bao gồm chính , trong đó có các điểm thảo luận và xem xét thêm các thảo luận về những gì có thể được đưa vào Ubuntu Main cho nginx). Một danh sách đầy đủ các mô-đun được kích hoạt ở đây nằm trong phần mô tả gói mà tôi đã viết ở đây:

    CÁC MÔ HÌNH HTTP TIÊU CHUẨN: Lõi, Truy cập, Auth Basic, Chỉ mục tự động, Trình duyệt, Bộ ký tự, GIF rỗng, FastCGI, Geo, Gzip, Tiêu đề, Chỉ mục, Yêu cầu giới hạn, Vùng giới hạn, Nhật ký, Bản đồ, Memcached, Proxy, Người giới thiệu, Viết lại, SCGI , Chia khách hàng, SSI, Thượng nguồn, ID người dùng, UWSGI.

    CÁC MÔ HÌNH HTTP TÙY CHỌN: Bổ sung, Gỡ lỗi, GeoIP, Giải nén Gzip, Sub HTTP, Bộ lọc hình ảnh, IPv6, IP thực, Spdy, SSL, Trạng thái còn sơ khai, Thay thế, WebDAV, XSLT.

    CÁC PHƯƠNG THỨC MAIL: Lõi thư, IMAP, POP3, SMTP, SSL.

  • nginx-lightlà hương vị nhẹ nhất nginxcó sẵn. Nó nằm trong kho vũ trụ và bạn phải kích hoạt nó để sử dụng nó. Nó không cho phép một lượng lớn các mô-đun có sẵn trong -corehoặc -full. Nó cũng chứa các mô-đun của bên thứ ba. Các mô-đun có sẵn trong nó như sau:

    CÁC MÔ HÌNH HTTP TIÊU CHUẨN: Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upflow.

    CÁC MÔ HÌNH HTTP TÙY CHỌN: Yêu cầu xác thực, Gỡ lỗi, Giải nén Gzip, IPv6, Ip thực, SSL, trạng thái còn sơ khai.

    PHƯƠNG THỨC BÊN THỨ BA: Tiếng vọng.

  • nginx-fulllà một trong những hương vị giàu tính năng hơn của nginxgói. Giống như lightđối tác của nó , nó nằm trong kho vũ trụ. Nó cho phép hầu hết các mô-đun bao gồm lõi là tiêu chuẩn và tùy chọn trong tarball nguồn từ nginx, cũng như một số mô-đun bên thứ ba khác được thiết kế để mở rộng khả năng của máy chủ web nginx. Các mô-đun của nó là như sau:

    CÁC MÔ HÌNH HTTP TIÊU CHUẨN: Lõi, Truy cập, Auth Basic, Chỉ mục tự động, Trình duyệt, Bộ ký tự, GIF rỗng, FastCGI, Geo, Gzip, Tiêu đề, Chỉ mục, Yêu cầu giới hạn, Vùng giới hạn, Nhật ký, Bản đồ, Memcached, Proxy, Người giới thiệu, Viết lại, SCGI , Chia khách hàng, SSI, Thượng nguồn, ID người dùng, UWSGI.

    CÁC MÔ HÌNH HTTP TÙY CHỌN: Bổ sung, Yêu cầu xác thực, Gỡ lỗi, GeoIP, Giải nén Gzip, HTTP Sub, Bộ lọc hình ảnh, IPv6, IP thực, Spdy, SSL, Trạng thái còn sơ khai, Thay thế, WebDAV, XSLT.

    CÁC PHƯƠNG THỨC MAIL: Lõi thư, IMAP, POP3, SMTP, SSL.

    CÁC PHƯƠNG THỨC BÊN THỨ BA: Auth PAM, DAV Ext, Echo, Bộ lọc thay thế HTTP, Hàng đợi công bằng ngược dòng.

  • nginx-extraslà hương vị giàu tính năng nhất của nginxgói. Và cũng giống như nó fulllightanh em, nó cũng là trong kho Universe. Nó cho phép tất cả các mô-đun trong nginx-fullnhưng cũng bao gồm các mô-đun bổ sung (như mô-đun Perl) và nhiều mô-đun bên thứ ba khác được thiết kế để mở rộng hơn nữa khả năng của máy chủ web nginx. Danh sách mô-đun đầy đủ của nó là dưới đây:

    CÁC MÔ HÌNH HTTP TIÊU CHUẨN: Lõi, Truy cập, Auth Basic, Chỉ mục tự động, Trình duyệt, Bộ ký tự, GIF rỗng, FastCGI, Geo, Gzip, Tiêu đề, Chỉ mục, Yêu cầu giới hạn, Vùng giới hạn, Nhật ký, Bản đồ, Memcached, Proxy, Người giới thiệu, Viết lại, SCGI , Chia khách hàng, SSI, Thượng nguồn, ID người dùng, UWSGI.

    CÁC MÔ HÌNH HTTP TÙY CHỌN: Bổ sung, Yêu cầu xác thực, Gỡ lỗi, Nhúng Perl, FLV, GeoIP, Giải nén Gzip, Bộ lọc hình ảnh, IPv6, MP4, Chỉ mục ngẫu nhiên, IP thực, Liên kết an toàn, Spdy, SSL, Trạng thái sơ khai, Thay thế, WebDAV, XSLT.

    CÁC PHƯƠNG THỨC MAIL: Lõi thư, IMAP, POP3, SMTP, SSL.

    CÁC PHƯƠNG THỨC BÊN THỨ BA: Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, Fancy Index, HttpHeadersMore, Bộ lọc thay thế HTTP, http đẩy, Bộ phát triển Nginx, Tiến trình tải lên, Xếp hàng công bằng ngược dòng.

  • nginx-naxsilà biến thể của nginx có sẵn mô-đun Tường lửa Ứng dụng Web Naxsi. Nó cũng có trong Vũ trụ, tuy nhiên hương vị này không còn được các nhà bảo trì Debian hỗ trợ nữa và sẽ bị loại bỏ hoàn toàn khỏi Ubuntu với bản phát hành 15.04. Ngoài mô-đun Naxsi WAF, nó cũng bao gồm một bộ mô-đun nhẹ hơn nhiều so với nginx-full. Danh sách đầy đủ các mô-đun bên dưới:

    CÁC MÔ HÌNH HTTP TIÊU CHUẨN: Core, Access, Auth Basic, Auto Index, Browser, Charset, Core, Empty GIF, FastCGI, Geo, Gzip, Header, Index, Giới hạn yêu cầu, Vùng giới hạn, Nhật ký, Bản đồ, Memcached, Proxy, Người giới thiệu, Viết lại , Chia khách hàng, SSI, Thượng nguồn, ID người dùng.

    CÁC MÔ HÌNH HTTP TÙY CHỌN: Gỡ lỗi, IPv6, IP thực, SSL, trạng thái còn sơ khai.

    PHƯƠNG THỨC BÊN THỨ BA: Naxsi, Thanh lọc bộ đệm, Hội chợ thượng nguồn.


Sử dụng tài nguyên trong số các hương vị

Mặc dù tôi không biết bất kỳ điểm chuẩn nào đã được chạy trên các hương vị khác nhau nginx, nhưng thông thường hợp lý khi cho rằng phiên bản nginxbạn sử dụng càng nhiều tính năng , thì càng sử dụng nhiều tài nguyên.

Tuy nhiên, không giống như Apache có thể là một thứ gì đó của một con điếm bộ nhớ với nhiều mô-đun được kích hoạt, nginxvẫn không ăn nhiều bộ nhớ so với Apache khi các mô-đun được kích hoạt. (Ngoại lệ cho tuyên bố này là naxsihương vị. Hương vị đó luôn ngốn nhiều tài nguyên hơn, vì nó là Tường lửa ứng dụng Web cũng như máy chủ web.)

Tôi sẽ thêm điểm chuẩn cho câu trả lời này nếu tôi tìm thấy chúng, nhưng một lần nữa, tôi không biết bất kỳ điểm chuẩn nào hiện có cho các hương vị khác nhau đối với nhau. Và mặc dù các trang web mà tôi chạy không có giao thông nặng, tôi đã không nhận thấy bất kỳ giảm hiệu suất thực sự giữa nginx-extras, nginx-fullhoặc nginx-lighttrên một trang web PHP-driven.


Canonical thực sự. Toàn bộ câu hỏi này bắt đầu khi tôi thấy dòng này trong error.logkhi tôi cài đặt nginx-extra: [info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf. Nó được chia sẻ và không phải RSS, nhưng vẫn khiến tôi tự hỏi. Do đó, hiệu suất nghi ngờ, nhưng đó là thứ yếu.
muru

2
@muru pushmô-đun nổi tiếng với việc sử dụng một chút bộ nhớ chia sẻ. Theo hiểu biết của tôi (và tôi có thể hơi sai về điều này), bộ nhớ dùng chung đó được sử dụng trên tất cả các trang web trên máy chủ web nơi mô-đun đẩy có thể được sử dụng. Tuy nhiên, mô-đun đó là mô-đun của bên thứ ba, vì vậy mọi vấn đề thực sự với nó nên được hướng tới người bảo trì của họ :)
Thomas Ward

1
Không, không có vấn đề. Có bất kỳ phiên bản mới hơn từ PPA của bạn nhận được vào backports? Và vì chúng có lẽ được xây dựng từ cùng một nguồn, một bản vá được nhóm Bảo mật áp dụng nginx-corecũng sẽ có sẵn -full-extra, phải không?
muru

3
@muru Thật không may, bao bì trong các phiên bản trong PPA được thực hiện tách biệt với Ubuntu. Hiện tại, việc chuyển gói gói sang các bản phát hành cũ trở nên rất khó khăn - cuối cùng nó được thực hiện trong PPA vì tôi không phải loay hoay với việc hợp nhất các thay đổi Debian vào các thay đổi của Ubuntu. Kể từ khi Bao gồm chính, tôi đã không điều tra việc nhập lại, bởi vì sẽ có rất nhiều thay đổi sẽ phải bỏ để phù hợp với những gì có sẵn trong các bản phát hành cũ hơn. (và việc giảm gói naxsi khiến cho việc nhập lại phiên bản 15.04 không thể thực hiện được).
Thomas Ward

2
@muru Và vâng, mọi bản vá được áp dụng như bản cập nhật bảo mật (hoặc là bản cập nhật phát hành tiêu chuẩn) trong 14.04 trở đi sẽ áp dụng cho nginx-corecác hương vị khác nginxcó sẵn trong kho lưu trữ đó, vì tất cả chúng đều dựa trên cùng một cơ sở mã. Họ chỉ có các ./configuredòng khác nhau để kích hoạt hoặc vô hiệu hóa các mô-đun khác nhau.
Thomas Ward

14

Đây là một đánh giá cấp cao, chủ yếu dựa trên các mô tả trong các gói . (Tôi sẽ không cung cấp các trường hợp sử dụng ví dụ cho từng trường hợp, nhưng tôi đã tìm ra điều này rất nhiều để thỏa mãn sự tò mò của mình để tôi cũng có thể đóng góp nó.)

Từ nhỏ nhất đến lớn nhất:

nginx-light: "phiên bản cơ bản"

Bộ mô-đun tối thiểu cho chức năng cơ bản.

nginx-naxsi: "phiên bản với naxsi"

Bộ tối thiểu, cộng với cấu hình "Nginx Anti Xss & Sql tiêm" cứng và các plugin cần thiết của nó.

nginx-core: "phiên bản lõi"

Việc triển khai nginx tiêu chuẩn, ít hơn các mô-đun của bên thứ ba.

Đây là gói nginx được Canonical hỗ trợ đầu tiên. Nó nằm trong kho "chính" của Ubuntu thay vì kho "vũ trụ" được cộng đồng hỗ trợ. Xem thông báo "nginx-core hiện có trong Ubuntu Trusty 14.04 Main!" trên một kho lưu trữ blog không chính thức của người bảo trì (cũ hơn và hiện không còn tồn tại) hoặc trên bản sao của bài đăng cũ trên blog không chính thức của người bảo trì :

không có hương vị nào đã được thiết lập của nginx được bao gồm trong Ubuntu Main (nginx-light, nginx-full, nginx-extend và nginx-naxsi). Nhóm bảo mật Ubuntu đã nói rằng các mô-đun của bên thứ ba rất khác nhau về mã hóa và do đó không thể được hỗ trợ.

Cuối cùng, chúng tôi đã tạo ra một gói có tên nginx-core đã được đưa vào kho chính. Gói này chỉ chứa các mô-đun đi kèm với tarball nginx chứng khoán. Chúng tôi không bao gồm bất kỳ mô-đun của bên thứ ba nào với gói này, chỉ bao gồm các mô-đun đến từ NGINX ngược dòng.

nginx-full: "phiên bản tiêu chuẩn"

Việc triển khai nginx tiêu chuẩn, bao gồm các mô-đun của bên thứ ba thường xuyên sử dụng.

nginx-ngoại vi: "phiên bản mở rộng"

Việc triển khai nginx tiêu chuẩn cộng với một số mô-đun được sử dụng không thường xuyên và lớn.


1
Một điều: theo tôi hiểu, nginxkhông hỗ trợ kích hoạt các mô-đun như Apache, vậy cài đặt nginx-extrascó ảnh hưởng đến hiệu suất không?
muru

1
naxsi chỉ được bao gồm trong -naxsi và -extras, không phải -core hoặc -full. Sử dụng -extras có thể sẽ có tác động hiệu suất, chắc chắn tiêu thụ bộ nhớ nhiều hơn một gói nhẹ hơn.
Steven K

2
Điều này là hết hạn. Tôi sẽ đăng một tuyên bố đầy đủ hơn về điều này, vì tôi có rất nhiều ảnh hưởng đối với gói nginx.
Thomas Ward

1
@ThomasW. Ồ, không phải bạn là anh chàng mà tôi đã trích dẫn ở trên từ "blog của người bảo trì" sao?
Steven K

1
@StevenKath Yeppers, và tôi thậm chí đã chạm vào điểm đó trong câu trả lời của tôi. Tôi đã phải lấy blog trước đó ngoại tuyến vì Wordpress là một phần xấu của khung, nhưng vấn đề vẫn còn tồn tại. Tôi ở xa 'người bảo trì chính thức' trong Ubuntu, nhưng tôi có thể bảo trì nhiều nhất cho gói và có thể được coi là 'người bảo trì không chính thức'.
Thomas Ward
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.