GitXplorerGitXplorer
R

reverse-proxy

public
0 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
c6c2eaaded0ee8a5a86a3db5de4e289b670b82bd

Update docker-compose.yml

RRockoDev committed 4 months ago
Unverified
d2342db3f3a484642288a127f9256419480524c5

Update wizard

RRockoDev committed 9 months ago
Unverified
3dcdcebc0401b03327437fc02655cc7fb2d78f3f

Update README.md

RRockoDev committed 9 months ago
Unverified
0e2086638744bcb0c1363853eb449781b02d13ed

Update README.md

RRockoDev committed 9 months ago
Unverified
09e0800f3e464c1700f8c95f890c2b88abb0f3a1

Update wizard.sh

RRockoDev committed 9 months ago
Unverified
4289e09b54cfdc01ea557d3a7b0b1ac71d61b942

Create wizard for new nginx sites

RRockoDev committed 9 months ago

README

The README file for this repository.

Configuración

  1. Crear copia del archivo .env.example con el nombre .env
cp .env.example .env
  1. Especificar el valor de la variable APP_NETWORK en el archivo .env.

Esto define el nombre de la red que se usará en docker. En otros proyectos se deberá usar el mismo valor para que se conecten a la misma red y se puedan comunicar.

APP_NETWORK=development

Montar

docker compose up -d

Wizard:

En el proyecto hay un script wizard.sh, con el se podrán crear los sitios de una forma más rápida.

Ejecutando el script sin parámetros, preguntará las opciones de configuración durante su ejecución:

bash wizard.sh

Otra opción es especificar los parámetros al ejecutar el script. De esta forma creará el sitio example.com apuntando al contenedor example-php-1 escuchando el puerto 80 y 443, generará el certificado y reiniciará nginx:

bash wizard.sh -d example.com -c example-php-1 -s -g -r

Opciones:

  • -d: Nombre de dominio.
  • -c: Nombre del contenedor.
  • -s: Escuchar puerto 443.
  • -g: Generar certificados. (Solo si -s también está habilitado).
  • -r: Reiniciar servicio NGINX al finalizar.
  • -h|--help: Mostrar ayuda.

Agregar dominio

  1. Crear el archivo etc/nginx/conf.d/local.example.com.conf reemplazando local.example.com por el dominio (local) que se usará.
  2. En ese archivo agregar lo siguiente:
server {
    listen       80;
    listen  [::]:80;
    server_name local.example.com;
    location / {
        set $container   example_container_name;
        resolver         127.0.0.11;
        proxy_pass       http://$container;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. Reemplazar local.example.com por el dominio (local) que se usará.
  2. Reemplazar example_container_name por el nombre del contenedor que responderá las solicitudes.
  3. Reiniciar este contenedor:
docker compose restart
  1. Agregar al archivo /private/etc/hosts (en la máquina local) el dominio que se usará:
127.0.0.1 local.example.com

HTTPS

  1. En el archivo etc/nginx/conf.d/local.example.com.conf (donde local.example.com es el dominio deseado) agregar lo siguiente:
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name local.example.com;
    location / {
        set $container   example_container_name;
        resolver         127.0.0.11;
        proxy_pass       http://$container;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    ssl_certificate "/etc/nginx/tls/${host}/cert.pem";
    ssl_certificate_key "/etc/nginx/tls/${host}/key.pem";
}
  1. Reemplazar local.example.com por el dominio (local) que se usará.
  2. Reemplazar example_container_name por el nombre del contenedor que responderá las solicitudes.
  3. Generar un certificado TLS para el dominio y guardar los archivos cert.pem y key.pem en la ruta "etc/nginx/tls/DOMINIO/"
  4. Reiniciar este contenedor:
docker compose restart

Generar certificados

Una opción para generar los certificados es mkcert, pero se puede usar cualquier otra herramienta o servicio.

mkdir -p etc/nginx/tls/local.example.com
cd etc/nginx/tls/local.example.com
mkcert -key-file key.pem -cert-file cert.pem local.example.com