CONFIGURAZIONE SITO WEB STATICO
server {
listen 80;
server_name example.com; # dominio applicazione
root /home/deploy/applications/APP_PATH/public; # directory applicazione
index index.html;
}
CONFIGURAZIONE CON UPSTREAM
upstream unique_upstream_name {
server 127.0.0.1:8001; # localhost with application port
}
server {
listen 80; # server host with 80 port
server_name servername.com; # custom application domain
location / {
proxy_pass http://unique_upstream_name;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto https; # activate in case of problem with https/http
}
}
REDIRECT DA HTTP A HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
CERTIFICATI SSL TRAMITE LET’S ENCRYPT
Installare certbot
sudo apt install certbot python3-certbot-nginx
Creare un certificato con certbot
sudo certbot --nginx -d example.com
Dopo l’esecuzione la configurazione di nginx verrà aggiornata automaticamente con i certificati SSL.
CERTIFICATI SSL TRAMITE LET’S ENCRYPT (BACKUP)
Installare certbot
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
Creare un certificato con certbot
sudo certbot certonly -a webroot --webroot-path=/APP_PUBLIC_PATH -d yourdomain.here
NOTE: /APP_PUBLIC_PATH corrisponde alla path pubblica dell’applicazione. Durante questa fase certbot crea un file all’interno della directory per verificare la proprietà del dominio.
Aggiornare/rinnovare i certificati scaduti con certbot
sudo certbot renew --dry-run
Impostare un cron di auto-aggiornamento dei certificati
sudo nano /etc/cron.d/certbot-custom
37 02 * * * root certbot -q renew --pre-hook="systemctl stop nginx" --post-hook="systemctl start nginx"
Impostare il certificato su una configurazione nginx
server {
# ...
listen 443 ssl; # add listener on 443 path
ssl_certificate /etc/letsencrypt/live/yourdomain.here/fullchain.pem; # add ssl certificate
ssl_certificate_key /etc/letsencrypt/live/yourdomain.here/privkey.pem; # add ssl certificate key
# ...
}
Creare/aggiornare un certificato senza utilizzo di un webserver
sudo certbot certonly --cert-name yourdomain.here
Successivamente scegliere l’opzione 1 per creare un certificato.
NOTE: Per eseguire questa operazione è necessario che la porta 80 del server sia aperta.