alliance-boreale/site-alliance-boreale/deploy/alliance-boreale.nginx.conf
Dan Allaire a0655d2e45
Some checks failed
CI / yaml-lint (pull_request) Has been cancelled
CI / ssot-export (pull_request) Has been cancelled
CI / tests (pull_request) Has been cancelled
CI / docs (pull_request) Has been cancelled
site web
2026-06-25 18:45:42 -04:00

78 lines
3.1 KiB
Text

# =============================================================================
# Alliance Boréale — vhost nginx (site statique)
# À déposer sur web-frontal-01 dans /etc/nginx/sites-available/, puis lier
# dans sites-enabled/. Sert le contenu statique de /var/www/alliance-boreale.
#
# sudo ln -s /etc/nginx/sites-available/alliance-boreale.conf \
# /etc/nginx/sites-enabled/alliance-boreale.conf
# sudo nginx -t && sudo systemctl reload nginx
#
# Adapter : server_name, chemins des certificats TLS, racine si besoin.
# =============================================================================
# --- Redirection HTTP -> HTTPS ---------------------------------------------
server {
listen 80;
listen [::]:80;
server_name alliance-boreale.ca www.alliance-boreale.ca;
# Laisser passer les défis ACME si vous en utilisez un :
location /.well-known/acme-challenge/ {
root /var/www/alliance-boreale;
}
location / {
return 301 https://$host$request_uri;
}
}
# --- Site HTTPS -------------------------------------------------------------
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name alliance-boreale.ca www.alliance-boreale.ca;
root /var/www/alliance-boreale;
index index.html;
# --- TLS (adapter les chemins : step-ca interne, Let's Encrypt, etc.) ---
ssl_certificate /etc/ssl/alliance-boreale/fullchain.pem;
ssl_certificate_key /etc/ssl/alliance-boreale/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:AB_TLS:10m;
# --- En-têtes de sécurité (site statique, sans pistage) ----------------
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
# Tout le contenu est local : pas de CDN, pas de tiers.
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'" always;
# Décommenter une fois le HTTPS stabilisé sur le domaine :
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# --- Compression --------------------------------------------------------
gzip on;
gzip_types text/css application/javascript text/html image/svg+xml;
gzip_min_length 1024;
# --- Cache des actifs statiques ----------------------------------------
location /assets/ {
expires 7d;
add_header Cache-Control "public";
}
# --- Routage ------------------------------------------------------------
location / {
try_files $uri $uri/ $uri.html =404;
}
error_page 404 /404.html;
# Pas de logs d'accès nominatifs au-delà du nécessaire (sobriété/vie privée).
access_log /var/log/nginx/alliance-boreale.access.log;
error_log /var/log/nginx/alliance-boreale.error.log;
}