#howto - Installare Nginx su Centos 7 e configurazione SSL

Scritto da il
Redatto da
nginx
centos

In questa guida andremo a vedere come è possibile installare Nginx su Centos 7 via repository ufficiale.

Configurazione repository

Per prima cosa aggiungiamo la repository ufficiale di Nginx, portiamoci alla locazione /etc/yum.repos.d/nginx.repo e digitiamo come segue:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Installazione

Procediamo ora con l’installazione vera e propria. Per prima cosa effettuiamo un aggiornamento dei pacchetti via yum:

sudo yum update

per poi proseguire nell’installazione come da prassi:

sudo yum install nginx

Per garantire il corretto funzionamento di nginx, è buona idea quella di abilitarne l’auto-avvio al riavvio del server, questo via systemctl:

sudo systemctl enable nginx

in questo modo verrà riavviato ogni qualvolta il server tornerà operativo.

Stato del processo

Teniamo nota dei seguenti comandi:

riavviare il processo

sudo systemctl restart nginx

avviare il processo

sudo systemctl start nginx

fermare il processo

sudo systemctl stop nginx

verificarne lo stato

sudo systemctl status nginx

aggiornare con le nuove configurazioni

sudo systemctl reload nginx

Configurazione firewall

Nel caso fosse attivo il firewall di sistema, dobbiamo aprire le porte per garantire il corretto entrare/uscire delle connessioni dalle porte 80 e 443:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Configurazione di Nginx

Nginx è pronto all’uso una volta installato e fornisce una configurazione base chiamata default, possiamo usare questa configurazione come esempio per le nostre.

Ipotiziamo di voler aggiungere il nostro dominio il_mio_dominio.ex a nginx, per farlo creiamo una copia della configurazione base come segue:

cp /etc/nginx/conf.d/default /etc/nginx/conf.d/il_mio_dominio_ex

apriamo quindi il nostro file di configurazione in /etc/nginx/conf.d/il_mio_dominio_ex e completiamo col seguente contenuto:

server {
    listen       80;
    server_name  il_mio_dominio.ex www.il_mio_dominio.ex;

    location / {
        root   /usr/share/nginx/il_mio_dominio_ex;
        index  index.html index.htm;
    }
}

Spiegazione dei blocchi server

Di seguito la spiegazione della precedente configurazione:

  • server {} - è il blocco contenente la configurazione del nostro dominio
  • listen - la prota dove ascoltare (di base 80 “http”, 443 per ssl “https”)
  • server_name - il nostro dominio completo di prefisso www e non
  • location / {} - sono le istruzioni per la locazione root del sito web (appunto /)
  • root - la locazione dove la location andrà a cercare i documenti
  • index - la tipologia di file che verrà eseguita di base da nginx (visitando il_mio_dominio.ex verrà in realtà mostrato il_mio_dominio.ex/index.html)

Riavviamo per completare:

sudo systemctl restart nginx

Configurazione SSL

Se vogliamo rendere disponibile il nostro sito web sotto SSL (https), dobbiamo essere in possesso di un certificato SSL.

Di seguito è presente la procedura su come generare un certificato Self-Signed, nel caso foste interessati ad un certificato Let’s Encrypt, seguite la guida disponibile a questo link.

Per prima cosa creiamo il certificato SSL via openssl:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

e modifichiamo poi il nostro blocco **** come segue:

server {
    listen       443 ssl;
    server_name  il_mio_dominio.ex www.il_mio_dominio.ex;

    ssl on;
    ssl_certificate /etc/ssl/private/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    location / {
        root   /usr/share/nginx/il_mio_dominio_ex;
        index  index.html index.htm;
    }
}

Riavviamo per completare:

sudo systemctl restart nginx

Non rimane che creare la locazione dove poter archiviare tutti i dati del nostro sito web. Nell’esempio di configurazione qui sopra abbiamo posizionato tutto in /usr/share/nginx/il_mio_dominio_ex creiamo quindi la cartella:

mkdir /usr/share/nginx/il_mio_dominio_ex

creiamo infine un file di prova:

touch /usr/share/nginx/il_mio_dominio_ex/index.html
echo "Buon divertimento da linuxhub.it!" > /usr/share/nginx/il_mio_dominio_ex/index.html

ed impostiamo i permessi corretti:

chown -R nginx:nginx /usr/share/nginx/il_mio_dominio_ex
chmod -R 775 /usr/share/nginx/il_mio_dominio_ex

visitiamo poi il nostro dominio per verificarne il corretto funzionamento.

In questo modo ogni volta che vogliamo aggiungere un nuovo dominio a nginx, sarà necessario copiare il file di configurazione default di nginx e configurarne il contenuto, riavviare, creare il percorso ed il gioco è fatto.

Good *nix?
 - Mirko

history_edu Revisioni