Servidor intermediari invers

De things.cat
La revisió el 17:37, 2 set 2023 per Jordi Binefa (discussió | contribucions) (docker-compose.yml)
Salta a: navegació, cerca

Using Docker to Set up Nginx Reverse Proxy With Auto SSL Generation

Ús del docker

  • Creació d'una xarxa local de contenidors (amb nom net):
docker network create net
  • Posada en marxa del docker pel servidor intermediari invers:

- Feu una carpeta per a allotjar l'arxiu docker-compose.yml

mkdir reverse-proxy
cd reverse-proxy/

- Verifique si teniu instal·lat el paquet docker-compose. Altrament, instal·leu-ho:

sudo apt install docker-compose

- Creeu l'arxiu docker-compose.yml i copieu-hi el contingut de docker-compose.yml:

nano docker-compose.yml

- Posada en marxa, des de la mateixa carpeta a on hi és docker-compose.yml:

docker-compose up -d
  • Com a exemple d'ús es crida a dos serveis que fan servir el servidor intermediari invers. Els subdominis han de configurar-se des de la pàgina de gestió de dominis (opció A per IP o CNAME amb nom de domini):

- Crida a un servidor nginx (https://sub.things.cat):

docker run --rm --name nginx-dummy -e VIRTUAL_HOST=sub.things.cat -e LETSENCRYPT_HOST=sub.things.cat -e VIRTUAL_PORT=80 --network net -d nginx:latest

- Crida a un servidor NextCloud (https://sub0.things.cat/):

docker run --name nextcloud0 --network net -e VIRTUAL_HOST="sub0.things.cat" -e LETSENCRYPT_HOST="sub0.things.cat" -d nextcloud:19.0.2

- Accés a la consola bash del docker nextcloud0:

docker exec -it nextcloud0 bash -l

- Per a obtenir la informació disponible del docker en funcionament:

docker inspect nextcloud0

- Per a obtenir la IP interna del docker en funcionament:

docker inspect nextcloud0 | grep IPAddress

o

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nextcloud0

docker-compose.yml

Abans de posar en marxa el docker cal crea la xarxa que connecta el reverse-proxy amb letsencrypt:

docker network create net

Un cop heu copiat l'arxiu docker-compose.yml a una carpeta del sistema:

docker-compose up -d

docker-compose.yml:

version: "3.3"

services:
   reverse-proxy:
       image: jwilder/nginx-proxy:latest
       container_name: "reverse-proxy"
       volumes:
           - "html:/usr/share/nginx/html"
           - "dhparam:/etc/nginx/dhparam"
           - "vhost:/etc/nginx/vhost.d"
           - "certs:/etc/nginx/certs"
           - "/run/docker.sock:/tmp/docker.sock:ro"
       restart: "always"
       networks: 
           - "net"
       ports:
           - "80:80"
           - "443:443"
   letsencrypt:
       image: jrcs/letsencrypt-nginx-proxy-companion:latest
       container_name: "letsencrypt-helper"
       volumes:
           - "html:/usr/share/nginx/html"
           - "dhparam:/etc/nginx/dhparam"
           - "vhost:/etc/nginx/vhost.d"
           - "certs:/etc/nginx/certs"
           - "/run/docker.sock:/var/run/docker.sock:ro"
       environment:
           NGINX_PROXY_CONTAINER: "reverse-proxy"
           DEFAULT_EMAIL: "un_correu@qualsevol.cat"
       restart: "always"
       depends_on:
           - "reverse-proxy"
       networks: 
           - "net"
volumes:
 certs:
 html:
 vhost:
 dhparam:

networks:
 net:
   external: true