GNU/Linux >> Linux Esercitazione >  >> Linux

25 Devi conoscere i comandi di Nginx per sviluppatori e amministratori

Nginx è uno dei server Web più popolari tra gli utenti Linux e BSD grazie al suo ricco set di funzionalità e alla flessibilità superiore. Se sei uno sviluppatore web, è probabile che tu stia lavorando con Nginx o con il server Apache. Quindi, è essenziale avere una comprensione approfondita di come funziona Nginx dalla riga di comando. Fortunatamente, puoi aumentare le tue abilità DevOps padroneggiando alcuni comandi Nginx. I nostri editori hanno selezionato per te questi comandi usati di frequente e hanno fornito una discussione completa per avviare gli amministratori Linux. Continua a leggere per saperne di più su questi comandi.

Utili comandi Nginx per gli amministratori Linux

A differenza di molti server Web, Nginx si occupa della configurazione del server utilizzando solo il file di configurazione. Pertanto, ci sono solo pochi parametri della riga di comando che puoi utilizzare. Questo è utile poiché gli amministratori possono scoprire rapidamente i comandi che stanno cercando. Di seguito sono riportati alcuni comandi Nginx ampiamente utilizzati che puoi utilizzare oggi.

Installazione del server Web Nginx in Linux

Nginx offre diversi pacchetti di installazione per diverse versioni di Linux. Puoi trovarli qui. Puoi anche installare Nginx direttamente usando il tuo gestore di pacchetti, come illustrato di seguito.

$ sudo apt install nginx                                # Ubuntu
$ sudo dnf install nginx                                # Fedora
$ sudo yum install epel-release && yum install nginx    # RHEL and CentOS

È anche possibile compilare Nginx dal sorgente. Troverai dettagli a riguardo in questa guida.

1. Avvia il server Nginx

È molto facile avviare il server web Nginx, come mostrato di seguito. Usa semplicemente uno dei comandi seguenti per richiamare il server web standard.

$ sudo service nginx start
- -

Quando si esegue questo comando, Nginx viene avviato dallo script di inizializzazione di System V. Se esegui Nginx da un sistema basato su systemd come Ubuntu Linux 16.04LTS e versioni successive, dovrai utilizzare il comando seguente.

$ sudo systemctl start nginx

Dovresti ricevere una risposta che mostra se il server è stato avviato correttamente o meno. Un altro metodo semplice ma efficace è chiamare Nginx direttamente utilizzando il percorso binario, come mostrato di seguito.

$ sudo /usr/bin/nginx

2. Arresta il server Nginx

Puoi anche fermare un server Nginx in esecuzione usando metodi simili mostrati sopra. Tuttavia, ricorda che quando interrompi un server Nginx in esecuzione, tutti i processi di sistema ad esso associati vengono uccisi. Terminerà anche se hai connessioni attive.

$ sudo service nginx stop

Questo comando arresterà il processo Nginx nei sistemi che utilizzano lo script di inizializzazione di System V. Per le macchine basate su systemd, è possibile utilizzare il comando seguente.

$ sudo systemctl stop nginx

Tuttavia, questi comandi possono richiedere molto tempo in server occupati. Il comando successivo mostra come arrestare il servizio Nginx in modo più rapido.

$ sudo killall -9 nginx

3. Esci da Nginx Server

Chiudere un server Nginx è simile all'arresto di uno, con una netta differenza. Il demone Nginx adotta un approccio aggraziato per uscire, nel senso che non interromperà alcuna connessione attiva. Pertanto, le richieste dei tuoi clienti verranno soddisfatte come previsto prima della chiusura.

$ sudo service nginx quit

Usa questo comando per uscire dal tuo server Nginx dalla shell di Linux. Gli utenti che eseguono una macchina basata su systemd possono utilizzare il comando successivo per eseguire questo lavoro.

$ sudo systemctl quit nginx

Puoi anche utilizzare uno dei seguenti comandi Nginx per uscire da un server in esecuzione.

$ sudo nginx -s quit
$ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4. Riavvia il server Nginx

Quando esegui un riavvio del server, il processo Nginx si interrompe semplicemente e poi ricomincia. Puoi utilizzare uno dei comandi seguenti per riavviare il tuo demone Nginx dalla riga di comando.

$ sudo service nginx restart

Questo comando riavvierà il server Nginx utilizzando lo script di inizializzazione di System V. Puoi utilizzare systemctl per farlo in un sistema basato su systemd come le versioni più recenti di Ubuntu.

$ sudo systemctl restart nginx

Puoi anche farlo in un modo diverso, come mostrato nell'esempio seguente.

$ sudo /etc/init.d/nginx restart

Se hai compilato Nginx dal sorgente, puoi usare il comando successivo.

$ sudo /usr/local/nginx/sbin/nginx -s restart

5. Ricarica il server Nginx

Ricaricare un server Nginx è leggermente diverso dal riavviarne uno. Quando ricarichi un server, Nginx si spegnerà in maniera aggraziata. Ciò significa che il demone Nginx verrà prima terminato, quindi analizzerà il file di configurazione per i tentativi di modifica e avvierà il nuovo processo di lavoro senza interrompere le operazioni.

$ sudo service nginx reload
$ sudo systemctl status nginx

Il primo comando utilizza lo script di inizializzazione di System V, mentre l'ultimo comando è per le distribuzioni Linux basate su systemd. Puoi anche invocare il seguente script per eseguire questo lavoro.

$ sudo /etc/init.d/nginx reload

Dovresti usare il comando successivo se hai compilato Nginx dal codice sorgente.

$ sudo /usr/local/nginx/sbin/nginx -s reload

Il comando successivo è un altro modo pratico per riavviare con grazia il tuo server Nginx.

$ sudo nginx -s reload

6. Controlla lo stato di Nginx

A volte potresti voler visualizzare lo stato corrente del tuo server Nginx prima di eseguire qualsiasi operazione su di esso. Questo può essere fatto molto rapidamente usando uno dei comandi seguenti. Ricordati di sudo il tuo comando o passa all'utente root.

$ sudo service nginx status

Come mostrato in alcuni comandi precedenti, questo comando funziona inizializzando lo script di inizializzazione di System V. Puoi utilizzare il comando successivo per i sistemi che utilizzano systemd invece.

$ systemctl status nginx

Un altro modo per farlo sarebbe usare direttamente lo script Nginx init.d, come dimostrato dal comando seguente.

$ sudo /etc/init.d/nginx status

Se Nginx è compilato dal codice sorgente, allora il comando successivo.

$ sudo /usr/local/nginx/sbin/nginx -s status

7. Controlla la configurazione di Nginx

Poiché esiste un'ampia gamma di capacità di personalizzazione di Nginx, gli amministratori di rete spesso devono modificare il file di configurazione per aggiungere/sbloccare nuove funzionalità. Tuttavia, dovresti sempre testare il tuo file di configurazione per potenziali errori. In caso contrario, gli utenti malintenzionati potrebbero sfruttare gli errori nella configurazione del server.

$ sudo nginx -t

Questo è un semplice comando che fa questo lavoro per te. Quando lo esegui, in pratica stai dicendo a Nginx di controllare il file di configurazione per errori di sintassi e di astenersi dall'esecuzione del server. È possibile utilizzare il comando seguente per eseguire il dump del risultato del test di configurazione sulla console del terminale.

$ sudo nginx -T

Puoi anche utilizzare uno dei seguenti comandi Nginx per testare la configurazione del tuo server Nginx.

$ sudo service nginx configtest   # System V Init
$ sudo systemctl config nginx     # systemd-based

8. Invia segnali a Nginx

Gli amministratori possono inviare vari segnali utili al demone Nginx. Dovrai utilizzare i -s flag per inviare un segnale a Nginx, seguito dal segnale effettivo. Avevamo già visto dei segnali in azione quando l'abbiamo usato per chiudere e ricaricare il nostro server Nginx. Qui li stiamo specificando in ordine.

$ sudo nginx -s stop     # stops a running Nginx server
$ sudo nginx -s quit     # quits Nginx server
$ sudo nginx -s reload   # gracefully restarts Nginx
$ sudo nginx -s reopen   # reopens server log file

Tuttavia, la tua versione di Nginx dovrebbe essere almeno 0.7.53 o superiore. Altrimenti, non puoi inviare segnali ai tuoi processi Nginx.

9. Visualizza le informazioni sulla versione di Nginx

Alcune funzionalità più recenti di Nginx sono disponibili solo per le versioni recenti. Pertanto, gli amministratori potrebbero dover affrontare alcuni problemi di compatibilità sui server legacy. Puoi facilmente determinare la tua versione di Nginx per vedere se i tuoi problemi hanno qualcosa a che fare con la versione del server o meno.

$ sudo service nginx -v       # uses System V Init
$ sudo systemctl -v nginx     # for systemd-based distributions

I seguenti comandi possono essere utilizzati per visualizzare informazioni aggiuntive relative all'installazione di Nginx, come variabili di configurazione e versione del compilatore.

$ sudo service nginx -V
$ sudo systemctl -V nginx

Inoltre, se stai utilizzando un server Linux basato su Ubuntu o Debian, puoi utilizzare il comando successivo per scoprire la tua versione di Nginx.

$ sudo apt-cache policy nginx

10. Visualizza la pagina della guida

La pagina della guida di Nginx è un ottimo punto di riferimento sia per i principianti che per gli amministratori Linux esperti. È possibile utilizzare uno dei seguenti comandi Nginx per visualizzare questo riferimento dall'emulatore di terminale Linux.

$ sudo service nginx -h     # uses System V Init
$ sudo systemctl -h nginx   # for systemd-based distributions

Puoi anche usare i comandi successivi per fare questo lavoro.

$ sudo service nginx -?     # uses System V Init
$ sudo systemctl -? nginx   # for systemd-based distributions

Fare riferimento alla pagina della guida è sempre un'ottima scelta poiché consentono di dare un rapido sguardo alle opzioni disponibili per l'utente.

11. Usa una configurazione alternativa

C'è un elenco infinito di capacità di personalizzazione offerte dai server web Nginx. Gli amministratori possono facilmente modificare il file di configurazione di Nginx per aggiungere funzionalità extra al proprio server. Il file di configurazione Nginx predefinito sulla maggior parte dei sistemi è /etc/nginx/nginx.conf. Tuttavia, è spesso buona norma implementare prima le personalizzazioni su un file di configurazione alternativo.

$ sudo nginx -c ~/test.conf

Nota che stiamo assumendo che il tuo nuovo file di configurazione sia chiamato test.conf. Sostituisci questa parte con il nome effettivo del tuo file di configurazione. Ora puoi testare le tue nuove configurazioni usando il comando seguente.

$ sudo nginx -t -c ~/test.conf

Puoi anche indicare a Nginx di cercare la configurazione predefinita in una directory diversa durante la compilazione dal sorgente. Basta passare questa directory durante la configurazione dell'installazione.

# ./configure --conf-path=/etc/some/other/nginx.conf

12. Elimina i messaggi non di errore

È normale ricevere messaggi di errore durante il test di nuove configurazioni. Tuttavia, otterrai anche molte informazioni irrilevanti quando controlli le tue personalizzazioni. Fortunatamente, il demone Nginx offre una semplice opzione per sopprimere questi messaggi non di errore, come mostrato di seguito.

$ sudo nginx -q -t -c ~/test.conf

Questo comando verificherà un file di configurazione personalizzato chiamato test.conf e ometterà le informazioni non necessarie dall'output. È abbastanza utile per le attività di amministrazione remota del server.

13. Modifica la direttiva globale

La direttiva globale contiene tutti i parametri di configurazione disponibili per il tuo server Nginx. È una delle sezioni più sensibili del tuo server web e richiede seria attenzione. Il -g l'opzione consente agli amministratori di definire direttive Nginx personalizzate per i loro server web.

$ sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"

Questo comando specifica le direttive Nginx globali per PID e definisce il numero di processi di lavoro, 2 in questo caso. Ora possiamo testarlo usando il file di configurazione alternativo usato in precedenza.

$ sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"

14. Modifica il percorso del prefisso Nginx

Il percorso del prefisso contiene tutti i file utilizzati dal tuo server web Nginx. È anche la stessa directory utilizzata dalla configurazione per l'impostazione dei relativi percorsi (tranne le sorgenti della libreria). Per impostazione predefinita, Nginx utilizza la directory /usr/local/nginx come prefisso. Il comando seguente mostra come possiamo ignorarlo dalla riga di comando.

$ sudo nginx -p /path/to/new/prefix

Il -p flag ci consente di passare la nuova posizione del prefisso. Spesso torna utile quando si testano nuovi server. Tuttavia, questa opzione non è disponibile per i server Nginx precedenti alla versione 0.7.53.

15. Controlla il modulo stub_status

Lo stato_stub il modulo espone alcune metriche molto importanti su Nginx. Gli amministratori lo usano spesso per monitorare i loro server di posta Linux o server proxy. Sebbene tutti i binari Nginx pre-compilati siano dotati di questo modulo, il tuo server Nginx potrebbe non averlo se hai compilato Nginx dal sorgente. Puoi utilizzare il seguente comando per verificare se ce l'hai o meno.

$ sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module

Se scopri che ti manca questo modulo, puoi sempre ricostruire Nginx dal sorgente. Includi semplicemente il –with-http_stub_status_module parametro durante la configurazione di Nginx, come mostrato di seguito.

$ ./configure --with-http_stub_status_module

16. Controlla il percorso Nginx

Esistono diversi comandi Nginx per controllare il percorso dell'installazione di Nginx. Come i comandi del terminale Linux di tutti i giorni, puoi sempre usare il comando which/whereis per verificare il percorso di Nginx.

$ which nginx
$ whereis nginx

I comandi precedenti visualizzeranno tutte le posizioni di sistema che contengono file relativi alla configurazione di Nginx. Puoi farlo in un altro modo usando il comando ps e cercando le informazioni richieste.

$ ps aux | grep nginx

Ora dovresti vedere chiaramente la posizione del tuo demone Nginx. Questo è molto utile per gli sviluppatori che non hanno privilegi di basso livello sulla macchina server.

17. Individua Nginx PID

Il PID o Process ID è un numero univoco utilizzato per distinguere i processi su sistemi Linux e simili a Unix. Possiamo inviare vari segnali al nostro server Nginx utilizzando il PID appropriato. Questo PID può essere trovato utilizzando uno dei seguenti comandi.

$ ps aux | grep [n]ginx
$ pgrep nginx
$ cat /run/nginx.pid

Quindi possiamo usare pgrep o il comando vanilla grep insieme a ps. Non preoccuparti se non capisci come funziona "grep". Abbiamo già pubblicato una guida ad alta intensità di risorse sui comandi Linux grep.

18. Trova i file di registro

I file di registro contengono molte informazioni preziose sia per gli amministratori di sistema che per gli sviluppatori. Nginx ha due file di registro predefiniti costituiti da access.log e error.log documenti. Questi si trovano in /var/log e possono essere visualizzati utilizzando il comando seguente.

$ ls /var/log/nginx/*.log

Ora dovresti vedere quei file di registro menzionati sopra. Come suggerisce il nome, access.log contiene informazioni sui visitatori del tuo sito e su error.log ospita avvisi/dettagli su configurazioni errate. Tuttavia, prima di poterli utilizzare, dovrai abilitare questi due registri dal file di configurazione di Nginx.

19. Imposta host virtuali

Gli host virtuali consentono agli amministratori del server di eseguire più di un sito Web in una singola macchina server. Questo è spesso utile poiché puoi condividere i tuoi processi di elaborazione per eseguire più siti contemporaneamente. Tuttavia, il termine host virtuale è solitamente associato ai server Apache. Sono conosciuti come "Blocchi server ” nel mondo Nginx.

$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com

Puoi facilmente abilitare host virtuali su un server Nginx usando questo semplice collegamento simbolico. Rimuovi semplicemente il collegamento simbolico se desideri disabilitare gli host virtuali.

20. Visualizza i moduli Nginx compilati

Come hai visto in alcuni precedenti comandi di Nginx, quando installi il demone, vengono installati anche alcuni moduli essenziali. Possiamo facilmente visualizzare questi moduli Nginx usando il comando seguente.

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

Questo comando sfrutta diversi strumenti della riga di comando di Linux e filtra le informazioni irrilevanti per visualizzare solo i moduli. Poiché Nginx ha una pletora di moduli, questo comando può essere utile per verificare quali moduli sono stati compilati per il tuo server.

21. Abilita/Disabilita il servizio Nginx

L'abilitazione del servizio Nginx consente al server di avviarsi automaticamente durante l'avvio. È essenziale per i server dedicati perché altrimenti le richieste degli utenti potrebbero essere interrotte. Possiamo facilmente abilitare Nginx per l'avvio automatico usando il comando seguente.

$ sudo service nginx enable     # System V Init
$ sudo systemctl enable nginx   # systemd-based systems

Questi comandi semplici ma efficaci assicureranno che i tempi di inattività del server siano ridotti il ​​più possibile. Puoi anche disabilitare l'avvio automatico se lo desideri. Usa semplicemente uno dei seguenti comandi.

$ sudo update-rc.d -f nginx disable
$ sudo systemctl disable nginx

22. Aggiorna Nginx al volo

Nginx consente agli amministratori di aggiornare il file binario e/o di configurazione al volo. Ciò significa che le richieste del client non verranno interrotte a causa degli aggiornamenti del server. Per fare ciò, per prima cosa, dobbiamo individuare il PID del processo Nginx principale. Possiamo farlo usando un semplice comando che abbiamo già dimostrato.

$ cat /run/nginx.pid

Il tuo nuovo binario Nginx dovrebbe essere pronto ormai. Genera un nuovo set di processi master/worker Nginx che utilizzano il nuovo binario tramite il comando seguente.

$ sudo kill -s USR2 `cat /run/nginx.pid`

Ora uccidi i processi di lavoro utilizzati dal primo processo master usando il comando seguente.

$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`

Seguilo uccidendo il vecchio processo principale.

$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23. Imposta Nginx nella prigione di Chroot

Una jail chroot per il tuo server Nginx fornirà un ulteriore livello di sicurezza in caso di potenziali effrazioni. Gli amministratori usano spesso questa tecnica per assicurarsi che i loro server siano isolati e sicuri in una piccola sezione del filesystem Linux. Usa i seguenti comandi per configurare il tuo server Nginx all'interno di una jail chroot.

# D=/nginx
# mkdir -p $D
# mkdir -p $D/etc
# mkdir -p $D/dev
# mkdir -p $D/var
# mkdir -p $D/usr
# mkdir -p $D/usr/local/nginx
# mkdir -p $D/tmp
# chmod 1777 $D/tmp
# mkdir -p $D/var/tmp
# chmod 1777 $D/var/tmp
# mkdir -p $D/lib64
# ls -l /dev/{null,random,urandom}
# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx

Dovrai eseguirli come root. Ora scopri le librerie condivise usando il comando seguente.

# ldd /usr/local/nginx/sbin/nginx

Copia tutte le librerie una per una, come mostrato di seguito.

# cp /lib64/libpcre.so.0 $D/lib64

Dovrai anche copiare /etc e anche alcune altre directory.

# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc

# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc

La tua prigione chroot è ora pronta per Nginx. Chiudi semplicemente il vecchio servizio e avvia quello nuovo usando il comando successivo.

# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24. Esegui Nginx all'interno di Docker

I container Docker sono diventati estremamente popolari grazie alla loro flessibilità e prestazioni robuste. Puoi facilmente creare ed eseguire il tuo server web Nginx dall'interno di un contenitore Docker. Il comando successivo estrae l'immagine Nginx ufficiale e crea un'istanza del server utilizzando la configurazione predefinita.

$ docker run --name nginx-server -P -d nginx

Puoi mantenere la memoria persistente usando il seguente semplice comando.

$ sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

Puoi trovare comandi Docker più utili in questo post. Dai un'occhiata se stai cercando informazioni specifiche per la finestra mobile.

25. Esegui Nginx all'interno di LXD

LXD è salutato come il container Linux di prossima generazione e offre una serie sbalorditiva di funzionalità. Puoi anche usare Nginx tramite i contenitori LXD. Dai un'occhiata ai seguenti comandi Nginx per LXD.

$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt install -y nginx
$ sudo systemctl reload nginx

Innanzitutto, abbiamo creato un contenitore chiamato nginx-server e quindi avviato una shell in quel contenitore. Quindi abbiamo aggiornato l'elenco dei pacchetti e installato il server Web Nginx all'interno di quel contenitore. L'ultimo comando ricarica semplicemente il server.

Pensieri finali

Ci sono molte funzionalità sorprendenti offerte da Nginx e i nuovi utenti sono spesso sopraffatti dalle sue capacità. Fortunatamente, puoi acquisire un'enorme sicurezza se conosci solo alcuni comandi di base di Nginx. Ecco perché ci siamo presi la libertà di presentarti questi fantastici comandi. Abbiamo trattato non solo i comandi di base, ma anche alcuni trucchi avanzati e più potenti da riga di comando. Si spera che sentirai più autorità sulle tue abilità di Nginx una volta che ti sarai abituato a questi comandi. Facci sapere cosa ne pensi nella sezione commenti qui sotto e continua a visitare per ulteriori guide sui server Linux.


Linux
  1. Best practice DNS per sicurezza e prestazioni

  2. Una guida all'esecuzione di un proxy inverso per HTTP(S), SSH e MySQL/MariaDB utilizzando NGINX

  3. 25 comandi Vim essenziali per la navigazione e la modifica

  4. 20 Comandi OpenSSL Esempi che devi conoscere

  5. Controlla gli aggiornamenti di Windows in Windows Server 2016 e 2019

50 comandi essenziali di Nmap per gli amministratori di sistema

40 utili comandi git per amministratori e sviluppatori Linux

20 cose essenziali da sapere se sei su Nginx Web Server

Le 5 migliori distribuzioni Linux per sviluppatori e programmatori

I 50+ migliori comandi Linux che DEVI conoscere

Come configurare un server NGINX RTMP per lo streaming