Diferència entre revisions de la pàgina «Servidor intermediari invers»

De things.cat
Salta a: navegació, cerca
m (Ús del docker)
m (Ampliació de la mida dels arxius a pujar per aquells dockers que fan servir el servidor intermediari invers nginx)
 
(Hi ha 15 revisions intermèdies del mateix usuari que no es mostren)
Línia 2: Línia 2:
  
 
= Ús del docker =
 
= Ús del docker =
Crida a un servidor ''nginx'' ([https://sub.things.cat/ https://sub.things.cat]):
+
* 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 ''[[Servidor_intermediari_invers#docker-compose.yml|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 [[Servidor_intermediari_invers#docker-compose.yml|docker-compose.yml]]:
 +
nano docker-compose.yml
 +
 
 +
- Posada en marxa, des de la mateixa carpeta a on hi és [[Servidor_intermediari_invers#docker-compose.yml|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/ 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
 
  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/ https://sub0.things.cat/]):
+
- Crida a un servidor ''NextCloud'' ([https://sub0.things.cat/ 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
 
  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'':
+
- Accés a la consola '''bash''' del docker ''nextcloud0'':
 
  docker exec -it ''nextcloud0'' bash -l
 
  docker exec -it ''nextcloud0'' bash -l
  
Per a obtenir la informació disponible del docker en funcionament:
+
- Per a obtenir la informació disponible del docker en funcionament:
 
  docker inspect ''nextcloud0''
 
  docker inspect ''nextcloud0''
  
Per a obtenir la '''IP interna''' del docker en funcionament:
+
- Per a obtenir la '''IP interna''' del docker en funcionament:
 
  docker inspect ''nextcloud0'' | grep IPAddress
 
  docker inspect ''nextcloud0'' | grep IPAddress
  
 
o
 
o
  <pre>docker inspect -f '{{range .NetworkSettings.Networks\}}{{.IPAddress}}{{end}}'</pre> ''nextcloud0''
+
  <pre>docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nextcloud0</pre>
 +
 
 +
= Ampliació de la mida dels arxius a pujar per aquells ''dockers'' que fan servir el servidor intermediari invers ''nginx'' =
 +
Copieu localment l'arxiu /etc/nginx/nginx.conf a dins del ''docker'':
 +
docker cp reverse-proxy:/etc/nginx/nginx.conf nginx.conf
 +
Editeu l'arxiu copiat localment:
 +
nano nginx.conf
 +
 
 +
Afegiu dins de  http { }:
 +
'''client_max_body_size 30M;'''
 +
 
 +
Copieu l'arxiu modificat localment a /etc/nginx/nginx.conf a dins del ''docker'':
 +
docker cp nginx.conf reverse-proxy:/etc/nginx/nginx.conf
 +
 
 +
Verifiqueu que /etc/nginx/nginx.conf ha estat modificat:
 +
docker exec -it reverse-proxy bash
 +
 
 +
root@3523091a1561:/app# cat /etc/nginx/nginx.conf
 +
 +
user  nginx;
 +
worker_processes  auto;
 +
 +
error_log  /var/log/nginx/error.log notice;
 +
pid        /var/run/nginx.pid;
 +
 +
 +
events {
 +
    worker_connections  10240;
 +
}
 +
 +
 +
http {
 +
    include      /etc/nginx/mime.types;
 +
    default_type  application/octet-stream;
 +
 +
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 +
                      '$status $body_bytes_sent "$http_referer" '
 +
                      '"$http_user_agent" "$http_x_forwarded_for"';
 +
 +
    access_log  /var/log/nginx/access.log  main;
 +
 +
    sendfile        on;
 +
    #tcp_nopush    on;
 +
 +
    keepalive_timeout  65;
 +
 +
    #gzip  on;
 +
 +
    include /etc/nginx/conf.d/*.conf;
 +
    '''client_max_body_size 30M;'''
 +
}
 +
 
 +
No cal que reinicieu el docker ''reverse-proxy''.
 +
 
 +
En el cas del ''docker'' Filebrowser m'ha calgut reiniciar-lo per a que permetés la pujada d'arxius de la nova mida configurada (en aquest exemple ha estat ampliat a 30MB). En canvi, al ''docker'' de Moodle no ha calgut reiniciar-lo:
 +
docker stop Filebrowser
 +
docker start Filebrowser
  
 
= docker-compose.yml =
 
= 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
 +
Podeu veure quins ''dockers'' són connectats a la xarxa interna:
 +
docker network inspect 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"
 
  version: "3.3"
 
   
 
   

Revisió de 11:12, 19 set 2023

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

Ampliació de la mida dels arxius a pujar per aquells dockers que fan servir el servidor intermediari invers nginx

Copieu localment l'arxiu /etc/nginx/nginx.conf a dins del docker:

docker cp reverse-proxy:/etc/nginx/nginx.conf nginx.conf

Editeu l'arxiu copiat localment:

nano nginx.conf

Afegiu dins de http { }:

client_max_body_size 30M;

Copieu l'arxiu modificat localment a /etc/nginx/nginx.conf a dins del docker:

docker cp nginx.conf reverse-proxy:/etc/nginx/nginx.conf

Verifiqueu que /etc/nginx/nginx.conf ha estat modificat:

docker exec -it reverse-proxy bash
root@3523091a1561:/app# cat /etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
   worker_connections  10240;
}


http {
   include       /etc/nginx/mime.types;
   default_type  application/octet-stream;

   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  /var/log/nginx/access.log  main;

   sendfile        on;
   #tcp_nopush     on;

   keepalive_timeout  65;

   #gzip  on;

   include /etc/nginx/conf.d/*.conf;
   client_max_body_size 30M;
}

No cal que reinicieu el docker reverse-proxy.

En el cas del docker Filebrowser m'ha calgut reiniciar-lo per a que permetés la pujada d'arxius de la nova mida configurada (en aquest exemple ha estat ampliat a 30MB). En canvi, al docker de Moodle no ha calgut reiniciar-lo:

docker stop Filebrowser
docker start Filebrowser

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

Podeu veure quins dockers són connectats a la xarxa interna:

docker network inspect 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