Installazione
Installazione su Ubuntu
E' disponibile come pacchetto di release:
sudo apt update
sudo apt install nginx-full nginx-doc
Viene installato come servizio standard, controllabile con systemctl
. E' subito running
ed enabled
.
La directory di gestione è /etc/nginx
. Un albero di questa directory è:
.
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── modules-available
├── modules-enabled
│ ...
│ └── 70-mod-stream-geoip2.conf -> /usr/share/nginx/modules-available/mod-stream-geoip2.conf
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│ └── default
├── sites-enabled
│ └── default -> /etc/nginx/sites-available/default
├── snippets
│ ├── fastcgi-php.conf
│ └── snakeoil.conf
├── uwsgi_params
└── win-utf
Il file di configurazione principale è nginx.conf
, che include altri files.
E' possibile creare altre configurazioni xxx.conf
in questa directory, con la sintassi giusta, e farle includere da nginx.conf
.
Parte della struttura, ad esempio modules e sites, ricorda la versione Debian di Apache.
Installazione in Docker
Le immagini sono disponibili su Docker Hub. Sceglieremo il tag alpine
:
docker pull nginx:alpine
Lancio del contenitore, con mapping della directory di configurazione in un volume docker per la persistenza delle modifiche, e della DocumentRoot in un altro volume:
Per renderli volumi permanenti, crearli manualmente:
docker volume create nginx-conf
docker volume create nginx-root
docker run -d --name nginalp -p 8088:80 \
-v nginx-conf:/etc/nginx \
-v nginx-root:/usr/share/nginx/html \
nginx:alpine sleep 1000000
Usiamo il mappaggio alla porta locale 8088
per evitare collisioni con servizi simili sulla macchina host.
Collegamento:
docker exec -ti nginalp sh
Lancio di nginx:
nginx
La directory di configurazione è /etc/nginx
. L'albero di configurazione è:
.
├── conf.d
│ └── default.conf
├── fastcgi.conf
├── fastcgi_params
├── mime.types
├── modules -> /usr/lib/nginx/modules
├── nginx.conf
├── scgi_params
└── uwsgi_params
La struttura è più semplice di quella della versione piena di Ubuntu.
Da notare che modules
è un link simbolico a /usr/lib/nginx/modules
.
La DocumentRoot (in terminologia nginx semplicemente root
) è: /usr/share/nginx/html
.
I log sono registrati nella directory /var/log/nginx
, ma sono link simbolici a stdout
e stderr
, così finiscono nel log del contenitore Docker.
Si possono aggiungere in conf.d
altri file di configurazione, ad esempio:
- proxy.conf - per l'ambiente di proxy
- sites.conf - per hosts virtuali
Controllo di Nginx in Docker
Il container ha come processo principale il server di ascolto nginx, più un certo numero di workers.
Non vi è systemd nel contenitore, così non possiamo usare systemctl
.
Il controllo avviene con nginx
opzioni
.
Per avere aiuto:
nginx -h
Per controllare il demone nginx
principale l'opzione è -s
, con le possibilità:
nginx -s stop
- ferma immediatamente il demone col segnale TERM, e ferma il contenitore.nginx -s quit
- ferma immediatamente il demone col segnale QUIT, e ferma il contenitore.nginx -s reopen
- riapre i file di log.nginx -s reload
- ricarica la configurazione.