Come Configurare NginX Reverse Proxy per Odoo
In questo articolo, ti guiderò attraverso il processo di configurazione di Odoo con NginX come reverse proxy. L'uso di NginX con Odoo è una soluzione efficiente per migliorare le performance e la sicurezza, gestendo al meglio le connessioni sia HTTP che WebSocket.
Configurazione di Odoo
Prima di configurare NginX, è necessario assicurarsi che Odoo sia configurato correttamente per gestire sia le connessioni HTTP che WebSocket. A partire dalla versione 16, Odoo include il supporto per WebSocket, il che significa che questa funzione viene abilitata automaticamente quando si attivano i workers multipli nel file di configurazione di Odoo.
Esempio di configurazione Odoo (`odoo-server.conf`)
[options]
http_port = 8069
# Parallel workers (2 * Cpu Cores + 1)
workers = 9
In questa configurazione, Odoo utilizza la porta 8069 per HTTP e gestisce i worker per ottimizzare il carico su server con più core CPU.
Virtual Host NginX Odoo
Ora che Odoo è configurato, possiamo configurare NginX come reverse proxy. Questo permette a NginX di gestire le richieste HTTP e di inoltrarle a Odoo sulla porta 8069. Inoltre, NginX può gestire le connessioni WebSocket necessarie per alcune funzioni avanzate di Odoo, come le notifiche in tempo reale.
Esempio di configurazione NginX
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoomp {
server 127.0.0.1:8072;
}
server {
listen 443 ssl;
server_name SERVERNAME.TLD;
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 $scheme;
location / {
proxy_pass http://odoo;
proxy_redirect off;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
# Reindirizza le richieste WebSocket alla porta gevent di Odoo
location /websocket {
proxy_redirect off;
proxy_pass http://odoomp;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
In questo esempio, Odoo utilizza la porta 8069 per gestire il traffico HTTP e la porta 8072 per le connessioni WebSocket. Il server NginX gestisce sia il traffico HTTP che quello WebSocket, migliorando così le prestazioni e semplificando la gestione delle richieste.
Integrazione con SSL
Per garantire una maggiore sicurezza, è essenziale configurare NginX con un certificato SSL. Questo permette di crittografare il traffico tra il client e il server, proteggendo i dati sensibili. Puoi ottenere un certificato SSL gratuito utilizzando Let's Encrypt, integrandolo nella configurazione NginX come mostrato sopra.
FAQ: Domande Frequenti
1. Qual è il vantaggio di usare NginX come reverse proxy per Odoo?
NginX offre una gestione delle risorse più efficiente rispetto ad Apache e permette di gestire connessioni contemporanee con minore utilizzo di CPU e RAM. Questo si traduce in una migliore scalabilità e prestazioni per Odoo.
2. Devo configurare manualmente WebSocket per Odoo?
No, Odoo 16 e versioni successive supportano nativamente WebSocket quando si abilitano più workers. Tuttavia, è necessario configurare correttamente NginX per gestire queste connessioni, come illustrato in questo articolo.
3. Posso usare Let's Encrypt con NginX?
Sì, Let's Encrypt offre certificati SSL gratuiti che possono essere facilmente integrati con NginX. Questo ti permette di crittografare le comunicazioni tra il client e il server senza costi aggiuntivi.