Para gestionar carpetas
public_html de usuarios del sistema, Apache es mucho más fácil que Nginx, incluso dentro de un contenedor Docker.Aquí te explico detalladamente por qué, usando una analogía simple: Apache está diseñado para ser multiusuario desde sus orígenes, mientras que Nginx nació enfocado en el rendimiento puro para un único administrador. [1]
¿Por qué Apache es más fácil para public_html?
- Módulo Nativo (
mod_userdir): Apache incluye el módulouserdir. Con solo activarlo, el servidor mapea automáticamente la rutahttp://ip/~usuario/hacia/home/usuario/public_html/. No tienes que escribir reglas complejas. [2] - Gestión de Permisos: Apache se adapta de forma nativa a la estructura de usuarios de Linux (
/etc/passwd). - El problema con Nginx: Nginx no tiene un equivalente a
mod_userdir. Para lograr lo mismo en Nginx, tendrías que escribir expresiones regulares complejas (Regex) en su archivo de configuración para capturar el nombre del usuario desde la URL y redirigir manualmente la ruta del disco, lo cual es propenso a errores de seguridad y permisos.
Cómo desplegarlo en Docker con Apache (La opción fácil)
Para que funcione con los usuarios de tu máquina host, lo ideal es montar la carpeta
/home de tu Linux dentro del contenedor de Apache.1. Crea el archivo Dockerfile
Crea un archivo llamado
Dockerfile en una carpeta vacía para construir tu servidor Apache modificado (ya que la imagen oficial de Apache trae userdir desactivado por defecto):2. Construye la imagen de Docker
Ejecuta este comando en la terminal donde guardaste el
Dockerfile: [3] 3. Arranca el contenedor mapeando los usuarios
Para que el Apache de Docker pueda ver las carpetas
public_html de tus usuarios reales de Ubuntu, debes montar el directorio /home usando volúmenes (-v):4. ¡Listo!
Cualquier usuario de tu sistema que tenga una carpeta en
/home/usuario/public_html (con los permisos 755 que configuramos en el paso anterior) será visible inmediatamente en la web a través de:Si prefieres ver cómo sería la alternativa compleja con Nginx para comparar las reglas de código, o si necesitas que este Docker maneje también bases de datos para cada usuario, avísame y te armo la configuración.
No hay comentarios:
Publicar un comentario