Vraag Hoe kan ik zien met welke vlaggen Nginx is gecompileerd?


Hoe kan ik controleren welke modules zijn toegevoegd aan een nginx-installatie?


211
2018-01-17 20:42


oorsprong


Een andere manier om dit te zeggen is "hoe kan ik zien met welke vlaggen Nginx is gecompileerd?" Wilde dat gewoon toevoegen om de zoekbaarheid te vergroten. - Nathan Long


antwoorden:


nginx -V toont alle geconfigureerde modules. Er is geen expliciete opdracht voor inschakelen / laden.


268
2018-01-17 21:35



Opmerking voor noobs: Indien niet aangemeld als rootgebruiker, zou het commando zijn sudo nginx -V - its_me
Ik hoefde het niet te gebruiken sudo op Ubuntu 14.04 - Asfand Qazi
Houd er rekening mee dat deze parameter hoofdlettergevoelig is. Als u kleine letters "-v" gebruikt, krijgt u alleen versienummer. Hoofdletters "-V" geeft u de volledige configuratie inclusief lijst van alle modules die worden gebruikt voor het compileren van Nginx binary. - Illidan
Het lijkt zoals sommige systemen misschien niet de $PATH correct ingesteld voor niet-superusers, zonder alle sbin mappen, dus u moet mogelijk het volledige pad van de daemon opgeven (bijv. /usr/sbin/nginx -V), of inderdaad gewoon gebruiken sudo. - cnst


Diff-able one-liner:

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

Handig voor het vergelijken van twee omgevingen:

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

BEWERK:

Dank u wel, Roman Newaza, voor het juiste erop wijzen dat dit ook inhoudt --without module compileer vlaggen. Ik gebruik het niet --without vlaggen en was gewoon gericht op het krijgen van de lijst met modules, dus ik heb dat niet opgevangen; de one-liner kan worden aangepast om te helpen bij het compileren van vlaggen tussen 2 installaties, zoals deze:

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

wat hetzelfde is als:

2>&1 nginx -V | xargs -n1

Misschien ook doorpijpen sort het idiosyncratisch ordenen van compile flags en normaliseren tr om opdrachten opnieuw te splitsen naar verschillende lijnen. Eindresultaat:

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

Dat werkt als sort gedraagt ​​zich hetzelfde op beide externe hosts (dat wil zeggen ze zijn beide GNU of BSD). Als u Linux vergelijkt met BSD (Mac OS X), verplaatst u gewoon de | sort | tr = '\n' stuk uit lsmodn naar de lokale shell waar sort zal consistent zijn:

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

Messier, maar het werkt.


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module commando is helemaal verkeerd omdat het zonder * bevat opties zoals geïnstalleerd! - Roman Newaza
geweldig antwoord. uit interesse waarom zet je 2> en 1 op de voorgrond. van wat ik heb gezien dat is meer ongewoon? - cavalcade
@MattTagg het is alleen vooraan totdat het wordt gebruikt. Dan is het aan het einde van beide commando's. - kmarsh


  • De nginx -V commando (hoofdletter V) toont alle modules, evenals andere compileertijdopties:

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

    Merk op dat er nooit behoefte aan is sudo voor deze opdracht, omdat superuser-bevoegdheden alleen nodig zouden zijn door nginx voor het openen van onderstaande poorten IPPORT_RESERVED (bijv. poorten onder 1024) en / of bepaalde log-bestanden om te schrijven.

    Echter, afhankelijk van uw $PATH instellingen, moet u mogelijk het volledige pad opgeven, bijvoorbeeld /usr/sbin/nginx -V, of inderdaad gebruiken sudo voor het hebben van de juiste /sbin/ map worden opgenomen in de $PATH.

  • Beginnend met nieuwere nginx-releases - sinds nginx 1.9.11 (Februari 2016) - dynamisch laadbare modules worden nu ondersteund, ook - http://nginx.org/r/load_module - met de hulp van de load_module richtlijn.


3
2017-08-26 19:06