Diferencia entre revisiones de «Apache: Proxy reverso para Odoo»

De nuxpy
Ir a la navegación Ir a la búsqueda
Línea 55: Línea 55:
 
     ProxyPreserveHost On
 
     ProxyPreserveHost On
 
     # Headers
 
     # Headers
    RequestHeader set X-Forwarded-Proto "https"
 
    Header always set Strict-Transport-Security "max-age=63072000;"
 
    Header always append X-Frame-Options "SAMEORIGIN"
 
 
     Header set Content-Security-Policy "default-src https: data: 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests;"
 
     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-Forwarded-Proto "https"
 
     Header set X-Content-Type-Options "nosniff"
 
     Header set X-Content-Type-Options "nosniff"
    Header set Cache-Control "no-cache, no-store, no-transform"
 
    Header set Pragma "no-cache"
 
 
     Header set X-XSS-Protection "1; mode=block"
 
     Header set X-XSS-Protection "1; mode=block"
 
     Header set Referrer-Policy "strict-origin-when-cross-origin"
 
     Header set Referrer-Policy "strict-origin-when-cross-origin"

Revisión del 18:18 9 abr 2021

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 recomiendo 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

Temas relacionados


Si te gustó este artículo y deseas colaborar para el mantenimiento y crecimiento de la información, puedes apoyar a través de: Icon paypal 120px.png Icon patreon 24px.png

Síguenos a través de: Icon youtube 24px.pngIcon instagram 24px.pngIcon twitter 24px.png