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 nginxopzioni.

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.