Así que finalmente he encontrado tiempo para trabajar en las guías “Configuración de Let’s Encrypt con múltiples dominios” y “Redirección de dominio(s) único(s) o múltiples a tu instancia de Discourse”.
He añadido mucho más a mi archivo containers/app.yml que lo que tú hiciste y casi todo funciona correctamente.
Mi Discourse está alojado en el subdominio www y mi objetivo era redirigir las solicitudes HTTP y HTTPS desde el dominio principal (apex) al subdominio www. Esto ahora funciona, pero si voy a https://mydomain.com, aunque se redirige, Chrome muestra la siguiente advertencia en la consola:
Redirección de navegación example.com -> www.example.com porque el servidor presentó un certificado válido para www.example.com pero no para example.com. Para desactivar este tipo de redirecciones, inicia Chrome con la siguiente bandera: --disable-features=SSLCommonNameMismatchHandling
Aquí están mis añadidos al archivo app.yml:
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.com -d www.example.com --keylength"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /return 301 https.+/
to: |
return 301 https://$host$request_uri;
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /gzip on;[^\}]+\}/m
to: |
gzip on;
add_header Strict-Transport-Security 'max-age=31536000'; # recuerda el certificado durante un año y conecta automáticamente a HTTPS para este dominio
after_web_config:
- replace:
filename: /etc/nginx/nginx.conf
from: /sendfile.+on;/
to: |
server_names_hash_bucket_size 64;
sendfile on;
- file:
path: /etc/nginx/conf.d/discourse_redirect_1.conf
contents: |
server {
listen 80;
listen 443 ssl;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
¿Esto parece correcto? Si es así, ¿hay alguna solución para el problema de discrepancia en el nombre del certificado?
EDITO: Tengo dos registros A, uno para el subdominio www y otro usando @ para capturar todas las solicitudes al dominio principal. Ambos apuntan a la IP de mi droplet de Digital Ocean. Supongo que esto también es correcto.
Gracias.