Traefik не изменяет заголовок местоположения в случае перенаправления бэкэнда - PullRequest
1 голос
/ 27 марта 2019

Я использую Traefik для реализации обратного прокси-сервера докера Apache с Letsencrypt.Все работает хорошо, за исключением случаев, когда сервер возвращает 301/302 перенаправления для некоторых ресурсов.Например:

curl https://example.com/js/conf.js
> GET /js/conf.js HTTP/2
> Host: example.com
> User-Agent: curl/7.64.0
> Accept: */*
>

< HTTP/2 302
< cache-control: no-store, no-cache, must-revalidate
< content-type: text/html; charset=iso-8859-1
< date: Wed, 27 Mar 2019 16:50:05 GMT
< expires: Thu, 01 Jan 1970 00:00:00 GMT
< location: http://example.com/it/js/conf.js
< server: Apache/2.4.34 (Unix) OpenSSL/1.0.2l
< content-length: 224
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://example.com/it/js/conf.js">here</a>.</p>
</body></html>

Я ожидаю, что traefik вместо этого установит заголовок местоположения https://example.com/it/js/conf.js.

Это конфигурация, которую я использую:

debug = true

logLevel = "info"
defaultEntryPoints = ["https","http"]

#[accessLog]

[api]
  dashboard = true

[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]

[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
exposedByDefault = false

[acme]
email = "test@example.com"
storage = "/etc/traefik/acme/acme.json"
entryPoint = "https"
onHostRule = true

[acme.httpChallenge]
entryPoint = "http"

Я запускаю контейнер со следующими метками:

--label traefik.enable=true --label traefik.website.frontend.rule=Host:example.com --label traefik.frontend.redirect.entryPoint=https

1 Ответ

1 голос
/ 23 апреля 2019

У меня была похожая проблема с трафиком и ганкорном здесь .В моем случае мне пришлось передать заголовок X-FORWARDED_PROTO, чтобы веб-сервер знал, что первоначальное соединение было установлено через HTTPS.Возможно, именно поэтому ваш Apache перенаправляет на HTTP.

...