Проблема, с которой я сталкиваюсь, мне несколько известна, но все же я хотел понять проблему в своей реализации.
У меня есть контейнер Traefik и служебный контейнер. У сервисного контейнера есть определенные маршруты, которые обслуживают страницы. Чтобы передать запрос от Traefik в контейнер службы / приложения, я прикрепил ярлык к своему контейнеру. Метка имеет путь, аналогичный указанному в моем приложении, так что Traefik может перенаправить запрос в бэкэнд-сервис, и, наконец, мой сервис может обработать запрос.
Основная проблема: Все работает нормально и модно до сих пор, но проблема в том, что мое приложение / служба обслуживает несколько страниц c, которые находятся на другом маршруте, не распознаваемом Traefik. Это приведет к ошибке 404. Я не могу найти выход из этой проблемы.
Например: У меня есть служба A, которая обслуживает запрос на http://localhost/blog и все дальнейшие запросы go - localhost / blog / *. Для этого я просто добавил бы метку с PathPrefix (/blog
) . Это заставляет все работать, но нет загруженных файлов JS и CSS. Причина этого заключается в том, что мои файлы css и js загружаются из маршрута http://localhost/js и http://localhost/css. Конечно, этот маршрут не распознается Traefik.
Docker -Compose.yml
servicea:
container_name: servicea-ge
image: 'servicea'
restart: always
labels:
- traefik.http.routers.servicea.rule=PathPrefix(`/blog`)
networks:
- internal-network
logging:
driver: json-file
options: {max-size: 20m, max-file: '5'}
environment:
TZ: '${Time_Zone}'
networks:
internal-network:
driver: bridge
name: test
Я пробовал решение, в котором У меня есть добавлено промежуточное программное обеспечение для удаления / blog , но это также вызовет дополнительные проблемы. Теперь домашняя страница загружается успешно, но дальнейшие маршруты, такие как / blog / addblog , начинают работать с ошибкой, так как блог будет удален (связующее ПО полосы рассылки). Например:
- traefik.http.routers.servicea.middlewares=strip-blog
- traefik.http.middlewares.strip-blog.stripprefix.prefixes=/blog
Может ли кто-нибудь предложить решение описанной выше проблемы?