Diferència entre revisions de la pàgina «Servidor intermediari invers»
(Es crea la pàgina amb «[https://linuxhandbook.com/nginx-reverse-proxy-docker/ Using Docker to Set up Nginx Reverse Proxy With Auto SSL Generation] = Ús del docker = Crida a un servidor ''n...».) |
m (→Ampliació de la mida dels arxius a pujar per aquells dockers que fan servir el servidor intermediari invers nginx) |
||
(Hi ha 20 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 | ||
+ | <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