Sign inSign up

pindu/nginx

By pindu

Updated about 2 months ago

Imagen con Nginx y Certbot para la implementación en contenedores. Certificados auto gestionables.

Image
Networking
Security
Web servers
1

10K+

pindu/nginx repository overview

Dockerizado de Nginx con Gestión Automatizada de Cron y Certificados SSL de Let's Encrypt

Docker Nginx Alpine Linux Python

Referencia Rápida

Mantenido Por: PINDU

Descargo de Responsabilidad:

El código proporcionado se ofrece "tal cual", sin garantía de ningún tipo, expresa o implícita. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daño u otra responsabilidad.

Donaciones:

Si encuentras útil este proyecto y deseas contribuir a su mantenimiento, considera hacer una donación. Tu apoyo es muy apreciado.

Donate

Resumen:

Este artículo presenta una solución basada en Docker para desplegar servidores web Nginx con programación automatizada de tareas cron y gestión de certificados SSL de Let's Encrypt. Se proporciona el Dockerfile y la configuración de Docker Compose que demuestran la instalación de paquetes necesarios, la configuración de tareas cron, y la integración con Let's Encrypt para la provisión automática y renovación de certificados SSL. Las características principales incluyen el uso de Alpine Linux para minimizar el tamaño de la imagen, gestión de volúmenes para la persistencia de registros, y sustitución de variables de entorno para la plantilla de configuración de Nginx. La solución tiene como objetivo simplificar el despliegue y mantenimiento de servidores web Nginx seguros en entornos en la nube.

Palabras clave: Docker, Nginx, Alpine Linux, Let's Encrypt, certificados SSL

Requisitos

  • Docker y Docker Compose instalados en el sistema.
  • Acceso a los puertos 80 y 443 en el host.
  • Un dominio válido apuntando a la IP del servidor.
  • Permisos para crear y modificar archivos en los directorios de configuración y volúmenes.

Para utilizar con un docker-compose.yml Creamos un archivo .env

SERVER_NAME=example.com
BACKEND=backend
PORT=80

Creamos el archivo docker-compose.yml

services:
  nginx:
    image: pindu/nginx:${TAG:-latest}
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./sites-enabled:/etc/nginx/conf.d
      - letsencrypt:/etc/letsencrypt/
volumes:
  letsencrypt:

Modificar el archivo según sea necesario ./templates/default.conf.template

upstream backend {
  least_conn;
  server ${BACKEND}:${PORT};
}

server {
    server_name ${SERVER_NAME};
    client_max_body_size 100M;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

Dockerfile de la imagen

FROM nginx:alpine

# Instalar dependencias en una sola capa y limpiar caché de APK
RUN apk add --no-cache \
    certbot \
    certbot-nginx \
    bash \
    openssl \
    && mkdir -p /run/nginx /var/www/html /etc/letsencrypt

# Exponer puertos HTTP y HTTPS
EXPOSE 80 443

# Comando por defecto para iniciar Nginx en primer plano
CMD ["nginx", "-g", "daemon off;"]

Tag summary

Content type

Image

Digest

sha256:83c6e41c1

Size

47.4 MB

Last updated

about 2 months ago

docker pull pindu/nginx