Câu trả lời:
nginx -V
sẽ liệt kê tất cả các mô-đun được cấu hình. Không có lệnh enable / load rõ ràng.
sudo nginx -V
sudo
trên Ubuntu 14.04
nginx -V
Diff-có thể một lớp lót:
2>&1 nginx -V | tr -- - '\n' | grep _module
Thuận tiện cho việc so sánh hai môi trường:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
BIÊN TẬP:
Cảm ơn bạn, Roman Newaza, đã chỉ ra một cách chính xác rằng điều này bao gồm các --without
cờ biên dịch mô-đun. Tôi không sử dụng --without
cờ và chỉ tập trung vào việc lấy danh sách mô-đun, vì vậy tôi đã không nắm bắt được điều đó; một lớp lót có thể được sửa đổi để giúp các cờ biên dịch khác nhau giữa 2 lần cài đặt, như thế này:
2>&1 nginx -V | tr ' ' '\n'
tương tự như:
2>&1 nginx -V | xargs -n1
Cũng có thể dẫn sort
đến việc bình thường hóa việc sắp xếp thứ tự các cờ biên dịch và tr
một lần nữa để phân chia các bài tập thành các dòng khác nhau. Kết quả cuối cùng:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Điều đó hoạt động nếu sort
hoạt động giống nhau trên cả hai máy chủ từ xa (tức là cả hai đều là GNU hoặc BSD). Nếu bạn đang so sánh Linux với BSD (Mac OS X), chỉ cần di chuyển | sort | tr = '\n'
phần này ra khỏi lsmodn
trình bao cục bộ, nơi sort
sẽ nhất quán:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Messier, nhưng nó hoạt động.
2>&1 nginx -V | tr -- - '\n' | grep _module
lệnh hoàn toàn sai vì nó liệt kê mà không có * tùy chọn như đã cài đặt!
Các nginx -V
lệnh (chữ hoa V) sẽ liệt kê tất cả các mô-đun, cũng như tùy chọn thời gian biên dịch khác:
%nginx -V
nginx version: nginx/1.2.2
built by gcc 4.2.1 20070719
TLS SNI support enabled
configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
%
Lưu ý rằng không bao giờ có bất kỳ nhu cầu sudo
cho lệnh này, như quyền hạn superuser sẽ chỉ là cần thiết bởi nginx để mở cổng bên dưới IPPORT_RESERVED
(ví dụ, cổng sau 1024) và / hoặc một số log-file cho văn bản.
Tuy nhiên, tùy thuộc vào $PATH
cài đặt của bạn , bạn có thể cần chỉ định đường dẫn đầy đủ - ví dụ: /usr/sbin/nginx -V
hoặc thực sự sử dụng sudo
để có /sbin/
thư mục phù hợp được bao gồm trong $PATH
.
Bắt đầu với các bản phát hành nginx mới hơn - kể từ nginx 1.9.11
(tháng 2 năm 2016) - các mô-đun có thể tải động hiện cũng được hỗ trợ - http://nginx.org/r/load_module - với sự trợ giúp của load_module
chỉ thị.
nginx -V
không hiển thị tất cả các mô-đun, nó hiển thị khoảng 20 mô-đun cho tôi.
Tôi sử dụng strings /usr/sbin/nginx|grep _module|grep -v configure| sort
trong đó liệt kê tất cả hơn 200 mô-đun trong nginx của tôi.
Tôi cũng đã thử objdump
nhưng có vẻ như nginx trong bản cài đặt của tôi đã bị tước nhị phân.