Creazione di un Virtual Host

Configurazione di partenza

Il file di configurazione da cui partire sarà vuoto, tranne per la minima configurazione essenziale:

# events è necessario per ritenere la configurazione valida
events {}

http {}

Definizione del Virtual Host

Ogni Virtual Host viene definito con con Server Context.

# events è necessario per ritenere la configurazione valida
events {}

http {
    server {

    }
}

Un server context è responsabile del listening di una porta (es. 80 per il protocollo http o 443 per il protocollo https) per uno specifico indirizzo IP o dominio.

Direttive listen e server_name

La porta di ascolto è definita dalla direttiva listen, mentre il dominio o l'indirizzo IP è specificato tramite la direttiva server_name.

# events è necessario per ritenere la configurazione valida
events {}

http {
  server {
    listen 80;
    server_name appunti.truppaperot.it
  }
}

La direttiva server_name può accettare wildcards: ad esempio, *.mydomain.com corrisponderà a tutti i sottodomini di mydomain.com.

Direttiva root

La direttiva root specifica con quale cartella del server il Virtual Host deve rispondere.

# events è necessario per ritenere la configurazione valida
events {}

http {
  server {
    listen 80;
    server_name appunti.truppaperot.it;

    root /sites/demo;
  }
}

Mime types e assets

Per permettere la lettura corretta degli asset, è necessario associare ad ogni estenzione di file un mime type (es. text/html per *.html).

Il mime type di default è text/plain.

Context types

L'associazione del mime type a un file viene definita nel contesto types all'interno di http.

# events è necessario per ritenere la configurazione valida
events {}

http {
  types {
    text/html html;
    text/css  css;
  }

  server {
    listen 80;
    server_name appunti.truppaperot.it;

    root /sites/demo;
  }
}

Metodo veloce di inserimento dei mime types

Scrivere tutti i mime types per tutte le estensioni diventa un compito tedioso.

Per questo motivo NGINX permette di velocizzare il tutto includendo il file /etc/nginx/mime.types tramite la direttiva ``.

Il file mime.types contiene al suo interno il contesto types e una lista molto completa di associazioni tra mime types e estensioni di file.

# events è necessario per ritenere la configurazione valida
events {}

http {
  include mime.types; # Path relativa del file rispetto al file di configurazione

  server {
    listen 80;
    server_name appunti.truppaperot.it;

    root /sites/demo;
  }
}