Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

256
Views
certificado ssl dinámico con nginx

Tenía una aplicación similar a Shopify. Entonces, mi cliente obtiene un subdominio cuando crea una tienda (es decir customer1.myShopify.com ).

para manejar este caso de subdominios dinámicos con nginx:

 server { listen 443 ssl; server_name admin.myapp.com; ssl_certificate /etc/letsencrypt/live/myapp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myapp/privkey.pem; location / { proxy_pass http://admin-front-end:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } } server { listen 443 ssl; server_name *.myapp.com; ssl_certificate /etc/letsencrypt/live/myapp/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/myapp/privkey.pem; location / { proxy_pass http://app-front-end:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }

esto funciona muy bien, así que si visita admin.myapp.com , verá la aplicación de administración y si visita cualquier xxx.myapp.com , verá la aplicación de la tienda.

El problema

Quiero permitir que mi cliente conecte su propio dominio. así que les dije que se conectaran con CNAME y A Record .

A Record => @ => 12.12.12.3(my root nginx ip)

CNAME => WWW => thier.myapp.com

no todas las solicitudes a customer.com serán resueltas por mi nginx.

así que agregué esta configuración a mi nginx, para capturar todas las demás solicitudes de server_name:

 server { listen 80; server_name server_name ~^.*$; location / { proxy_pass http://app-front-end:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }

y funciona bien

pero ¿cómo puedo manejar SSL para este caso? porque podría ser cualquier nombre de dominio. No sé cuál será el nombre de dominio del cliente.

¿Cómo puedo darles la posibilidad de agregar un certificado SSL automáticamente y sin crear manualmente?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Este bloque de servidor debería funcionar ya que los nombres de variables son compatibles con las directivas ssl_certificate y ssl_certificate_key .

 server { listen 443; server_name server_name ~^.*$; map "$host" $domain_name { ~(.*)\.(.*)\.(.*)$ $2.$3; } ssl_certificate /path/to/cert/files/$domain_name.crt; ssl_certificate_key /path/to/cert/keys/$domain_name.key; location / { proxy_pass http://app-front-end:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } }

PD El uso de nombres de variables comprometería el rendimiento porque ahora nginx cargaría los archivos en cada protocolo de enlace SSL.

Referencia: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate

over 4 years ago · Santiago Trujillo Report

0

Sugiero usar un bloque separado con diferentes certificados ssh, esa es la única solución que funcionó para mí

 server { listen 80; root /var/www/html/example1.com; index index.html; server_name example1.com; ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem; location / { try_files $uri $uri/ =404; } } server { listen 80; root /var/www/html/example2.com; index index.html; server_name example2.com; ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem; location / { try_files $uri $uri/ =404; } }
over 4 years ago · Santiago Trujillo Report

0

En mi opinión, en lugar de comprometer el rendimiento de nginx, deberíamos usar un trabajo cron, digamos el bot letsencrypt, que obtendrá el certificado en función del dominio solicitado por el usuario, y puede agregar el certificado en nginx conf y reiniciar el servidor.

Prima:

He usado traefik, que son soluciones basadas en kubernetes, cargan configuraciones sobre la marcha sin reiniciar.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!