nginx¶
2018
Installation¶
apt install nginx
Organisation des répertoires :
fichiers de configuration :
/etc/nginx/fichier de logs :
/var/log/nginxsite web :
/var/www/
Le répertoire correspondant à un site sera nommé par le nom de domaine.
Exemple, le fichier du site web a.example.com se trouve dans le rĂ©pertoire /var/www/a.example.com avec un fichier de configuration du mĂȘme nom.
Si le site nâa pas de nom de domaine, les rĂ©pertoires porteront le nom de lâadresse IP.
Le site web par dĂ©faut est accessible Ă lâadresse http://127.0.0.1.
Certificat via Letâs Encrypt¶
Installer certbot¶
Ajouter dans le fichier /etc/apt/sources.list
# For debian 8
deb http://ftp.debian.org/debian jessie-backports main
Puis installer cerbot :
sudo apt update
sudo apt install certbot -t jessie-backports
Masquer le numĂ©ro de version de Nginx dans les en-tĂȘtes et les pages dâerreur
server_tokens off;
CrĂ©er un certificat Letâs Encrypt¶
certbot certonly -d x.exemple.com
Lâargument certonly permet uniquement de gĂ©nĂ©rer un certificat sans lâinstaller, nous ferons cela plus tard.
Lâautre argument -d permet de saisir le domaine pour lequel le certificat sera gĂ©nĂ©rĂ©.
La liste de tous les arguments est disponible avec la commande man cerbot.
Toujours utiliser la mĂ©thode standalone, vous devez dâabord arrĂȘter tous les services associĂ©s aux ports 80 et 433 tels que Nginx ou Apache.
Renouvellement automatique¶
Pour effectuer le renouvellement automatique des certificats.
Ajouter la ligne ci-dessous au fichier â/etc/crontabâ et redĂ©marrer le service cron.
@daily service nginx stop && certbot renew --quiet && service nginx start
Configuration dâun hĂŽte virtuel¶
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
Ajouter le fichier /etc/nginx/snippets/ssl-params.conf avec les éléments suivants communs à tous les hÎtes virtuels.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
# To avoid so-called âman in the middleâ attacks
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Ajouter la configuration ci-dessous au nouveau fichier /etc/nginx/sites-available/x.example.com.
Un lien symbolique de celui-ci est créé dans le dossier sites-enabled pour activer le site.
server {
listen 80;
listen [::]:80;
server_name x.exemple.com;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name x.exemple.com;
root /var/www/x.exemple.com;
index index.html;
ssl_certificate /etc/letsencrypt/live/x.exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/x.exemple.com/privkey.pem;
include snippets/ssl-params.conf;
error_page 404 /40X/;
error_page 403 /40X/;
location /40X/ {
return 0;
}
}
GoAccess, analyseur de logs web¶
Compilation et installation
apt install -y gcc autoconf gettext autopoint build-essential libssl-dev libmaxminddb-dev libncursesw5-dev
git clone https://github.com/allinurl/goaccess.git
cd goaccess
autoreconf -fiv
./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
make
make install
RĂ©cupĂ©rer les logs depuis docker avec nginx. Ăditer le fichier
./goaccess-nginx.confet ajouter
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
port 443
real-time-html true
ssl-cert /etc/ssl/certs/certificate.cer
ssl-key /etc/ssl/certs/key.key
ws-url wss://example.com
Récupérer les logs (via un conteneur) et lancer GoAccess
docker logs -f prod-nginx 2>/dev/null | goaccess -p ./goaccess-nginx.conf -o html - > /mnt/data-website/prod-proxy/data/html/goaccess/index.html