Træfik como proxy inverso

Træfik es una herramienta muy interesante para utilizar como proxy inverso. Es muy sencillo el desplegarlo y la configuración de este es casi automática.

http://i0.wp.com/blog.ichasco.com/wp-content/uploads/2017/06/architecture.png?resize=810%2C443&ssl=1

Creamos, primero, el directorio donde dejaremos el fichero de configuración, con el comando:

mkdir traefik && cd traefik

Descargamos el fichero de configuración:

wget http://raw.githubusercontent.com/ichasco/traefik/master/traefik.toml

Creamos la red de traefik, con el siguiente comando:

docker network create traefik

Para acceder con usuario y contraseña, al panel de traefik, ejecutamos el siguiente comando, para encriptar la contraseña:

htpasswd –nb usuario password

ahora que tenemos el password encriptado, lo introducimos en el fichero de configuración, para ello, editamos el fichero traefik.toml

Debajo de [web]

# Web administration port

#

# Required

#

address = ":8080"

Añadimos:

[web.auth.basic]

users = ["usuario:password_encriptado_con_htpasswd"]

También, establecemos el nombre del dominio, cambiando la línea domain:

# Required

#

domain = "nombre_del_dominio"

Si tenemos los servidores en granja, cambiamos la siguiente línea:

# Optional

#

swarmmode = false

por

# Optional

#

swarmmode = true

De no tenerlos en granja, dejamos esta línea sin tocar.

Guardamos el fichero.

Ahora, procedemos a desplegar el contenedor, con el siguiente comando:

docker run -d -p 8100:8080 -p 80:80 --network traefik --name traefik_proxy -v $PWD/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock --restart=always traefik

Para acceder, usaremos la ip del servidor y el puerto 8100

Nos pedirá el usuario y el password, que le hemos definido:

Automáticamente, descubrirá los contenedores corriendo, y creará las entradas también de forma automática, usando el nombre del contenedor y agregando el dominio especificado.

Nota: Los contenedores tienen que estar en la nueva red de traefik. Un contenedor, puede estar en varias redes a la vez.

Con la configuración actual de træfik, solo se puede acceder por el puerto 80. Si se quisiese acceder por el puerto 443 habría que hacer lo siguiente

http con Let’s Encrypt

Træfik tiene una opción muy interesante, que es crear certificados al vuelo con let’s encrypt. Para quien no conozca let’s encrypt, es una entidad certificadora gratuita y conocida por todos los navegadores. Con esta opción, una vez levantado el docker con el servicio, træfik crea automáticamente un certificado y puede llegar a forzar las conexiones por el puerto 443 para garantizar la seguridad de estas.

Para hacer esto, lo único que hay que hacer es editar el traefik.toml y añadir lo siguiente:

defaultEntryPoints = ["http", "http"]

[acme]

  email = "[email protected]"

  storageFile = "/etc/traefik/acme/acme.json"

  entryPoint = "http"

  acmeLogging = true

  onDemand = true

  OnHostRule = true

[entryPoints]

  [entryPoints.http]

    address = ":80"

      [entryPoints.http.redirect]

    entryPoint = "http"

  [entryPoints.http]

    address = ":443"

     [entryPoints.http.tls]

http://pbs.twimg.com/media/DXxZPHrWkAA8NyC.jpg

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.