Префикс пути в Docker
Префикс пути пускает на сервис только адреса, которые начинаются с заданной папки.
Правило PathPrefix(`/api`)
у роутера api
срабатывает для
http://site.localhost/api
и вложенных путей под /api.
Корень сайта без /api
на этот сервис не идёт.
К правилу можно добавить
&& Host(`site.localhost`),
чтобы не поймать чужой трафик с тем же префиксом на другом имени.
Сервис api
на traefik/whoami
без ports
и прокси в одном файле:
services:
proxy:
image: traefik:3
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
api:
image: traefik/whoami
labels:
- traefik.enable=true
- traefik.http.routers.api.rule=PathPrefix(`/api`) && Host(`site.localhost`)
Запуск в фоне:
docker compose up -d
По адресу
http://site.localhost/api
виден текст whoami.
Адрес
http://site.localhost/
на сервис api
не попадает.
Опишите сервис docs на traefik/whoami с префиксом /help и хостом desk.localhost в правиле роутера docs.
Откройте http://desk.localhost/help и сравните ответ с адресом http://desk.localhost/ без папки help.