Apache: Proxy reverso para Odoo
En el siguiente artículo se describe un ejemplo de cómo realizar una configuración de proxy reverso en Apache exclusivamente para Odoo.
Adicionalmente, un agregado para generar el certificado digital a través de CertBot. Este ejemplo se hace sobre una distribución Linux Debian en su versión estable más reciente y en la versión estable más reciente de Odoo.
Módulos de Apache
Los módulos necesarios para habilitar la navegación de Odoo a través de proxy reverso de Apache serían:
a2enmod http2
a2enmod headers
a2enmod proxy
a2enmod proxy_html
a2enmod proxy_http
a2enmod proxy_http2
a2enmod rewrite
systemctl restart apache2
Fichero VirtualHost
El fichero para el VirtualHost se pudiera escribir con el nombre del dominio, como usuario root, ejemplo:
/etc/apache2/sites-available/odoo.nuxpy.com.conf
Y su contenido de la siguiente manera:
<VirtualHost *:80>
ServerName odoo.nuxpy.com
ServerAlias www.odoo.nuxpy.com
ServerAdmin webmaster@nuxpy.com
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyRequests Off
ProxyPass / http://127.0.0.1:8069/
ProxyPassReverse / http://127.0.0.1:8069/
# Fix IE problem (http error 408/409)
SetEnv proxy-nokeepalive 1
</VirtualHost>
<VirtualHost *:443>
ServerName odoo.nuxpy.com
ServerAlias www.odoo.nuxpy.com
ServerAdmin webmaster@nuxpy.com
<proxy *>
Order deny,allow
Allow from all
</proxy>
ProxyPass / http://127.0.0.1:8069/
ProxyPassReverse / http://127.0.0.1:8069/
ProxyRequests Off
ProxyPreserveHost On
# Headers
Header set Content-Security-Policy "default-src https: data: 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests;"
Header set X-Forwarded-Host "127.0.0.1"
Header set X-Forwarded-Proto "https"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Feature-Policy "fullscreen 'self'"
Header set x-permitted-cross-domain-policies "none"
# Fix IE problem (http error 408/409)
SetEnv proxy-nokeepalive 1
</VirtualHost>
Se habilita dicho VirtualHost:
a2ensite odoo.nuxpy.com.conf
Se recarga el servicio de Apache:
systemctl reload apache2
Con esto debería estar arriba el VirtualHost.
Creación certificado Let's Encrypt con certbot
Como usuario root instalar el certbot para Apache:
aptitude install python3-certbot-apache certbot
Teniendo el módulo certbot para Apache instalado, se realiza la configuración del dominio:
certbot --apache -d odoo.nuxpy.com -d www.odoo.nuxpy.com
Se recomienda hacer el registro de wwww.odoo en el DNS de tipo A, apuntando directamente a la dirección IP.
Finalmente se activa el cron:
crontab -e
Y se agrega al final del fichero el siguiente contenido:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew