Nginx'in hangi bayraklarla derlendiğini nasıl görebilirim?


227

Bir nginx kurulumuna hangi modüllerin eklendiğini nasıl kontrol edebilirim?


7
Bunu söylemenin bir başka yolu da "Nginx'in hangi bayraklarla derlendiğini nasıl görebilirim?" Sadece aranabilirliği artırmak için bunu eklemek istedim.
Nathan Long,

Yanıtlar:


291

nginx -Vyapılandırılan tüm modülleri listeler. Açık bir etkinleştirme / yükleme komutu yoktur.


8
Notlar için not: Eğer root kullanıcısı olarak giriş yapılmadıysa, komut aşağıdaki gibi olacaktırsudo nginx -V
its_me

4
sudoUbuntu 14.04
Asfand Qazi

5
Lütfen bu parametrenin büyük / küçük harf duyarlı olduğunu unutmayın. Küçük harf "-v" kullanıyorsanız, yalnızca sürüm numarasını alırsınız. Büyük harf "-V", Nginx ikili dosyasını derlemek için kullanılan tüm modüllerin listesini içeren eksiksiz bir konfigürasyon sunar.
İllidan

1
Bazı sistemler $PATHsüper kullanıcı olmayanlar için uygun bir şekilde ayarlanmamış gibi görünüyor , tüm sbindizinleri atlıyorlar , bu nedenle, arka planın tam yolunu belirtmeniz gerekebilir (örneğin, /usr/sbin/nginx -V) ya da gerçekten kullanmanız gerekebilir sudo.
14’te

@ its_me ... muhtemelen çalıştırmak için sudo gerekmeznginx -V
Carson Reinke

64

Dağıtılabilir tek astar:

2>&1 nginx -V | tr -- - '\n' | grep _module

İki ortamı karşılaştırmak için uygun:

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

DÜZENLE:

--withoutModül derleme bayraklarını içerdiğine dikkat çektiğiniz için Roman Newaza'ya teşekkür ederiz . --withoutBayrakları kullanmıyorum ve sadece modül listesini almaya odaklanmıştım, bu yüzden bunu anlamadım; tek astar, 2 kurulum arasında bayrakların derlenmesini sağlamak için değiştirilebilir:

2>&1 nginx -V | tr ' '  '\n'

ki aynı:

2>&1 nginx -V | xargs -n1

Belki ayrıca sortderleme bayraklarının kendine özgü sıralamasını normale döndürmek ve trtekrar atama işlemlerini farklı satırlara bölmek için kullandırabiliriz. Son sonuç:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

Bu sort, her iki uzak ana bilgisayarda da aynı şekilde davranırsa çalışır (yani, her ikisi de GNU veya BSD'dir). Linux'u BSD (Mac OS X) ile karşılaştırıyorsanız, | sort | tr = '\n'parçayı tutarlı olacak lsmodnyerel kabuğa götürmeniz sortyeterlidir:

lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn  | sort | tr = '\n')

Messier, ama işe yarıyor.


2
2>&1 nginx -V | tr -- - '\n' | grep _modulekomutu, yüklü olmadan * seçeneklerinin listelendiği gibi tamamen yanlıştır!
Roman Newaza

Harika cevap neden ilgilenmiyorsunuz? Neden önüne 2> & 1 koydunuz? gördüklerimden daha sıradışı olanları?
cavalcade

@MattTagg kullanılana kadar sadece önünde. O zaman her iki komutun da sonunda.
kmarsh

3
  • nginx -VKomutu (büyük harf V) tüm modülleri, hem de diğer derleme zamanı seçeneklerini listeler:

    %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 %

    sudoSüper kullanıcı güçlerine yalnızca aşağıdaki bağlantı noktalarını açmak için nginx'e ihtiyaç duyacağına dikkat edin, çünkü bu komut için hiçbir zaman gerek yoktur, IPPORT_RESERVEDörneğin 1024'ün altındaki bağlantı noktaları ve / veya yazmak için belirli günlük dosyaları.

    Ancak, $PATHayarlarınıza bağlı olarak , tam yolu belirtmeniz gerekebilir - örneğin /usr/sbin/nginx -V, ya da gerçekten sudouygun /sbin/dizinin içine dahil edilmesi için kullanma $PATH.

  • Daha yeni nginx sürümleriyle başlayan - nginx 1.9.11(Şubat 2016'dan beri ) - dinamik olarak yüklenebilir modüller artık desteklenmektedir - http://nginx.org/r/load_module - load_moduledirektifin yardımıyla .


1

nginx -V tüm modülleri göstermiyor, benim için yaklaşık 20 modülü gösteriyor.

strings /usr/sbin/nginx|grep _module|grep -v configure| sortNginx'imdeki tüm 200+ modüllerin listesini kullanıyorum .

Ben de denedim objdumpama kurulumumdaki nginx'in binary çıkardığı anlaşılıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.