durcissement-erplibre/nginx/erplibre.conf
2026-03-03 09:42:18 -05:00

91 lines
2.9 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Exemple de vhost Nginx (Nginx sur l'hôte) domaine illustratif: www.rencontres-linux.quebec
# À adapter: chemins TLS (Certbot), upstream (IP/nom du conteneur), logs.
# Quick win: réduire fingerprinting
server_tokens off;
# Zones (rate limit) à placer dans http{} si vous centralisez
limit_req_zone $binary_remote_addr zone=LOGIN:10m rate=5r/m;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# Upstreams (exemple)
# Recommandé: pointer vers le conteneur via le réseau docker dédié (DNS docker) si Nginx est aussi dans docker.
# Ici Nginx est sur l'hôte: on pointera vers l'IP du conteneur Odoo sur erplibre_net (ou via un reverse proxy local).
upstream odoo_backend {
server 127.0.0.1:18069; # TODO: remplacer par un mécanisme stable (ex: socat, ou IP fixe, ou Nginx dans docker)
keepalive 32;
}
upstream odoo_bus {
server 127.0.0.1:18072; # TODO idem
keepalive 16;
}
server {
listen 80;
server_name www.rencontres-linux.quebec rencontres-linux.quebec;
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
try_files $uri =404;
}
location / {
return 301 https://www.rencontres-linux.quebec$request_uri;
}
}
server {
listen 443 ssl http2;
server_name www.rencontres-linux.quebec;
# TODO Certbot
ssl_certificate /etc/letsencrypt/live/www.rencontres-linux.quebec/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.rencontres-linux.quebec/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header Referrer-Policy strict-origin-when-cross-origin always;
access_log /var/log/nginx/rencontres-linux-access.log;
error_log /var/log/nginx/rencontres-linux-error.log warn;
client_max_body_size 512M;
# Web login rate limit
location = /web/login {
limit_req zone=LOGIN burst=10 nodelay;
proxy_pass http://odoo_backend;
}
# Websocket/bus
location /websocket {
proxy_pass http://odoo_bus;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
location / {
proxy_pass http://odoo_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
}
}