Nginx-proxy

De josalba
Ir a la navegación Ir a la búsqueda

Nginx Proxy


Instalar

Para instalar necesitamos tener docker en nuestra maquina. Para esta instalación en mi caso monte una red de docker para tener todos los servicios que manejara nginx-proxy.

docker network create nginx-proxy

Después lanzamos el nginx-proxy

docker run -d -p 80:80 --name nginx-proxy --net nginx-proxy -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

De esta manera tenemos nginx-proxy que recuperara todo el trafico que se envié al puerto 80 del nodo y lo redireccionara al contenedor docker que tenga asociado el dominio.
Si queremos usar certificados ssl, tenemos que indicar que escuche el puerto 443, y enlazar un directorio con los certificados. Los certificados tiene que estar del siguiente "{dominio}.key" para que nginx-proxy pueda recuperarlos.

docker run -d -p 80:80 -p 443:443 --name nginx-proxy --net nginx-proxy -v /var/docker/certs/:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

Ahora los contenedores se les tiene que proporcionar una variable que indicara cual es el dominio que tiene asignado el contenedor y tienes que añadirlo a la red de docker creada anteriormente.
Tambien tiene que estar el puerto expuesto en la red para poder redirigir el trafico

docker run --expose 80 --net nginx-proxy -e VIRTUAL_HOST={dominio} ...

Configuración

Una de las configuraciones que e tenido que realizar es aumentar el upload_max_file para poder enviar ficheros a los contenedores.

#Para entrar en el contenedor
sudo docker exec -i -t nginx-proxy bash
#Modificar la configuración de nginx
sudo nano /etc/nginx/nginx.conf

Cambiamos el tamaño maximo de subida del fichero, ( si en el contenedor estas ejecutando por ejemplo un apache2 también deberás cambiar la configuración de apache2 en el contenedor del servicio )
Añadir esta linea a nginx.conf

client_max_body_size 20M;

Reiniciamos el servicio de nginx ( del contenedor nginx-proxy )

service nginx reload