# router-proxy

独立的实例入口反向代理：

- 对外暴露一个统一端口
- 按 `Host` 头把专属 URL 转发到对应 `app-instance` 容器
- 路由表从 `app-instance/runtime/registry/instances.json` 动态生成

## 文件

- `nginx.conf`
  - Nginx 主配置
- `render-routes.py`
  - 从实例注册表生成 `runtime/conf.d/instances.conf`
- `start-proxy.sh`
  - 启动路由代理容器
- `reload-proxy.sh`
  - 重载路由配置

## 默认约定

- 容器名：`beaver-router-proxy`
- Docker network：`beaver-instance-edge`
- 对外端口：`8088`

建议直接参考：

- [`.env.example`](/home/ivan/xuan/beaver_project/router-proxy/.env.example)

`REGISTRY_PATH` 和 `OUTPUT_PATH` 一般不需要配。  
这两个是主机侧脚本路径，默认值会按 `start-proxy.sh` 自己所在目录推导，比写死某台机器上的绝对路径更稳。

## 启动

```bash
cd /home/ivan/xuan/beaver_project/router-proxy
./start-proxy.sh
```

## 重载

```bash
cd /home/ivan/xuan/beaver_project/router-proxy
./reload-proxy.sh --start-if-missing
```

## URL 约定

如果 deploy-control 侧使用默认配置，实例 URL 形如：

```text
http://<instance-slug>.127.0.0.1.nip.io:8088
```

只要本机或 DNS 能把该域名解析到代理所在机器，就会由该代理转发到目标实例容器。
