# *Caddy* como proxy inverso

#### 08/04/2023

Antes de comenzar, ¿Qué es un *proxy inverso*? un proxy inverso es un servidor que se sitúa delante de los servidores web y reenvía las solicitudes del cliente (por ejemplo, el navegador web) a esos servidores web. Hasta ahora yo estaba usando [Nginx Proxy Manager](https://nginxproxymanager.com/) pero en la última actualización me daba bastantes errores en los *logs*. Busqué otro sencillo y que consumiera poco, me decidí por **[Caddy](https://github.com/caddyserver/caddy)**.

![](https://myblog.clonbg.es/caddy/caddy.png)

Lo instalé con *docker-compose*

```docker-compose.yml
version: "3.7"

services:
  caddy:
    image: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./data:/data
      - ./config:/config
    restart: unless-stopped
    container_name: caddy
```
Creamos el archivo **Caddyfile**
```Caddyfile
ejemplo.servidor.es {
    reverse_proxy http://192.168.1.17:81
}
ejemplo_protegido.servidor.es {
    reverse_proxy http://192.168.1.17:82
}
```
Creamos el contenedor:
```bash
docker-compose up -d
```
Ejecutamos un comando para crear una contraseña para las *webs* que quieras con autenticación básica:

```bash
docker exec -it caddy caddy hash-password --plaintext "1234"
```
Esto devuelve un *hash*, anótalo

Y por último modificamos el archivo **Caddyfile** introduciendo la autenticación básica en los subdominios en los que necesite:

```Caddyfile
(basic-auth) {
    basicauth / {
        user hash_anterior
    }
}

ejemplo.servidor.es {
    reverse_proxy http://192.168.1.17:81
}

ejemplo_protegido.servidor.es {
    import basic-auth
    reverse_proxy http://192.168.1.17:82
}
```
A partir de ahora cuando quieras entrar a *ejemplo_protegido.servidor.es* deberás poner 'user' y '1234'.

Reiniciamos el contenedor:

```bash
docker restart caddy
```

Visto en [Caddy. Crear usuario y contraseña. uGeek Blog](https://ugeek.github.io/blog/post/2022-12-23-caddy-crear-usuario-y-contrasena.html), [Proxy Inverso con Caddy. uGeek Blog](https://ugeek.github.io/blog/post/2021-02-19-proxy-inverso-con-caddy.html)

Salu2
