Почему PathPrefixStrip работает, а PathPrefix - нет?

У меня есть статический сайт 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?


person magnusarinell    schedule 15.05.2018    source источник


Ответы (1)


Конфигурация 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.

person Victor Noël    schedule 27.05.2018