Почему PathPrefixStrip работает, а PathPrefix не работает? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть статический сайт GatsbyJS, созданный с --prefix-paths. pathPrefix установлен на /environment/test в gatsby-config.js. Он развернут в рою докеров под управлением Traefik.

Добавление следующей метки в сервис заставляет все работать нормально: traefik.frontend.rule=PathPrefixStrip:/environment/test

Затем я могу перейти к /environment/test и щелкнуть по моему сайту GatsbyJs.

Однако я нахожу это странным, поскольку бэкэнд создается с префиксом пути.

Добавление следующей метки не работает: traefik.frontend.rule=PathPrefix:/environment/test

Разве это не должно работать с PathPrefix вместо PathPrefixStrip?

1 Ответ

0 голосов
/ 27 мая 2018

Конфигурация pathPrefix в GatsbyJS означает, что к каждой ссылке вашего сайта будет добавляться /environment/test (см. документация ), но это не означает, что в контейнере, на котором работает сайт, страницана самом деле размещен на этом пути.В вашей ситуации кажется, что это не так.

Это означает, что при подключении через Traefik с PathPrefixStrip, когда в вашем браузере вы нажимаете на ссылку:

  1. Браузер запрашивает /environment/test/page
  2. Traefik преобразует это в запрос к контейнеру для /page
  3. Контейнер фактически обслуживает файлы на /, поэтому он отвечает со страницей

При подключении через Traefik с PathPrefix:

  1. Браузер запрашивает /environment/test/page
  2. Traefik преобразует это в запрос к контейнеру для /environment/test/page
  3. Контейнер фактически обслуживает файлы на /, поэтому он не находит страницу.

Следовательно, вы путаете настройку pathPrefix веб-сайта с путемс которого обслуживается тот же веб-сайт.

Таким образом, альтернативой текущей ситуации будет обслуживание веб-сайта под /environment/test/ и использование PathPrefix с traefik.

...