Инструменты пользователя

Инструменты сайта


service:traefik

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:traefik [06.10.2020 13:11] – [Проблема проброса на путь после домена] viacheslavservice:traefik [11.08.2024 16:22] (текущий) – [Аутентификация] viacheslav
Строка 1: Строка 1:
 +===== Traefik =====
 +==== Аутентификация ====
 +Пароль нужно кодировать с помощью htpasswd (в т. ч. в Докере), под Windows с помощью [[https://github.com/shoenig/bcrypt-tool|bcrypt-tool]].
 +<code bash>
 +# Установить htpasswd
 +apk add apache2-utils
 +# Пользователь user, пароль 234567
 +htpasswd -nb user 234567
 +user:$apr1$jSrLMlYc$SqO40GakivRBqlS/5UsXL0
 +# Docker
 +docker run --rm httpd:alpine htpasswd -nb user 234567
 +</code>
 +:!: В пароле необходимо удваивать знак доллара!
  
 +<code yaml>
 +# В docker-compose.yml
 +- "traefik.http.routers.service.middlewares=service-auth"
 +- "traefik.http.middlewares.service-auth.basicauth.users=user:$$apr1$$jSrLMlYc$$SqO40GakivRBqlS/5UsXL0"
 +</code>
 +
 +https://doc.traefik.io/traefik/v2.0/middlewares/basicauth/
 +
 +
 +==== Проблема проброса на путь после домена ====
 +Когда нужно пробрасывать, например,
 +<code>
 +http://host.local/conv -> container:5800
 +</code>
 +и при этом писать правила так:
 +<code yaml>
 +handbrake:
 +image: jlesage/handbrake
 +labels:
 +- "traefik.http.routers.handbrake.rule=Host(`host.local`) && PathPrefix(`/conv`)"
 +- "traefik.http.middlewares.handbrake-stripprefix.stripprefix.prefixes=/conv"
 +- "traefik.http.routers.handbrake.middlewares=handbrake-stripprefix"
 +</code>
 +, то если обращаться на адрес **http://host.local/conv,** будет открываться лишь часть html, остальное грузиться не будет. Нормально работает, если в конце поставить слэш, а именно - **http://host.local/conv/.**
 +
 +Чтобы сделать удобно, нужно написать так:
 +<code yaml>
 +labels:
 +  - "traefik.http.routers.handbrake.rule=host(`host.local`) && PathPrefix(`/conv`)"
 +  - "traefik.http.routers.handbrake.middlewares=handbrake-redirectregex, handbrake-replacepathregex"
 +  - "traefik.http.middlewares.handbrake-replacepathregex.replacepathregex.regex=^/conv/(.*)"
 +  - "traefik.http.middlewares.handbrake-replacepathregex.replacepathregex.replacement=/$$1"
 +  - "traefik.http.middlewares.handbrake-redirectregex.redirectregex.regex=^(.*)/conv$$"
 +  - "traefik.http.middlewares.handbrake-redirectregex.redirectregex.replacement=$$1/conv/"
 +</code>
 +В этом случае слэш будет добавляться. https://stackoverflow.com/questions/41637806/routing-paths-with-traefik
 +
 +Для Nextcloud пример посложнее:
 +<code yaml>
 +labels:
 +  - "traefik.http.routers.nextcloud.rule=Host(`host.local`) && PathPrefix(`/cloud`)"
 +  - "traefik.http.routers.nextcloud.middlewares=nextcloud-redirectregex, nextcloud-caldav, nextcloud-replacepath"
 +  - "traefik.http.middlewares.nextcloud-replacepath.stripprefix.prefixes=/cloud"
 +  - "traefik.http.middlewares.nextcloud-caldav.redirectregex.permanent=true"
 +  - "traefik.http.middlewares.nextcloud-caldav.redirectregex.regex=^http://(.*)/.well-known/(card|cal)dav"
 +  - "traefik.http.middlewares.nextcloud-caldav.redirectregex.replacement=http://$${1}/remote.php/dav/"
 +  - "traefik.http.middlewares.nextcloud-redirectregex.redirectregex.regex=^(.*)/cloud$$"
 +  - "traefik.http.middlewares.nextcloud-redirectregex.redirectregex.replacement=$$1/cloud/"
 +</code>
 +https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html
 +
 +С поддоменом таких проблем нет - просто пишешь
 +<code yaml>
 +labels:
 +  - "traefik.http.routers.handbrake.rule=host(`conv.host.local`)"
 +</code>

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki