Configuré Nextcloud en una Raspberry Pi 4 con Ubuntu Server 18.04.4 de 64 bits, siguiendo la guía de Carsten Rieger, por lo que ahora la Pi está instalada y ejecuta nginx. Luego, usando la configuración de Mailu , instalé un servidor de correo con Docker Compose. Cambié la configuración estándar porque los puertos 80 y 443 en conflicto utilizados por nginx "nativo" y nginx "docker container", por lo que en el contenedor uso 8080 y 8443.
¿Cómo debo configurar nginx nativo para que cuando visite mi mail.mydomain.com redirija a los puertos 8080 y 8443? ¿Cómo puedo obtener certificados para HTTPS para mail.mydomain.com con Let's Encrypt?
Si entiendo que su problema es correcto, le gusta usar nginx en el host como un servidor proxy para redirigir el tráfico al contenedor docker.
Extienda su nginx.conf en el host:
http { ... # redirect http to https from your domain server { listen 80; server_name localhost, <your domain>, <secondary domain>; return 301 https://<your domain>$request_uri; } # simple reverse-proxy server { listen 443; server_name localhost, <your domain>, <secondary domain>; ssl on; # if you use let's encrypt (certbot) /etc/letsencrypt/live/<your domain>/fullchain.pem ssl_certificate <path to certificate>; # if you use let's encrypt (certbot) /etc/letsencrypt/live/<your domain>/privkey.pem ssl_certificate_key <path to key>; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don't use SSLv3 ref: POODLE client_max_body_size 200M; # pass requests for dynamic content to rails/turbogears/zope, et al location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } } ... }A su segunda pregunta, sí, puede usar Let's Encrypt para obtener el certificado. Ya sea de forma independiente o con el complemento nginx.
$ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install python-certbot-nginxObtenga su certificado sin el complemento nginx (primero debe detener el nginx porque certbot usa el puerto 80)
$ sudo certbot certonly --standalone -d <your domain> -d <secondary domain>Obtenga su certificado con el complemento nginx
$ sudo certbot --nginx -d <your domain> -d <secondary domain>En cualquier caso, debe volver a cargar el nginx después de recuperar o renovar un certificado:
$ sudo service nginx reload