Как перенаправить с дополнительными заголовками в ответе? - PullRequest
1 голос
/ 12 июня 2019

В настоящее время я использую haproxy для автоматического обновления некоторых доменов с https на https.Я использую код 308, потому что я не нашел возможности добавить заголовок Expires: Thu, 01 Dec 2014 16:00:00 или Cache-Control: max-age=3600.

frontend http-frontend
    bind *:80
    mode http
    redirect scheme https code 307 if { hdr(Host) -i foo.example.com } !{ ssl_fc }
    redirect scheme https code 307 if { hdr(Host) -i bar.example.com } !{ ssl_fc }

Как мне изменить вышеуказанные правила перенаправления, чтобы включить заголовок Cache-Control вответ?

1 Ответ

2 голосов
/ 17 июня 2019

HAProxy вставляет заголовки в ответ с помощью директивы http-request set-header. К сожалению, на момент написания, это доступно только тогда, когда HAProxy получает трафик от бэкэнда.
«http-request redirect ..» (или «redirect») - это окончательная директива на внешнем интерфейсе, в данном случае ответ от сервера отсутствует. Поворот заключается в создании фиктивного бэкенда, подобного этому:

frontend http-frontend
    bind *:80
    mode http
    use_backend be_dummy_redirect if { hdr(Host) -i foo.example.com } !{ ssl_fc }
    use_backend be_dummy redirect if { hdr(Host) -i bar.example.com } !{ ssl_fc }
    default_backend be_app

 backend be_dummy_redirect
    http-response set-header Expires "Thu, 01 Dec 2014 16:00:00"
    http-response set-header Cache-Control max-age=3600
    server redirect-server 127.0.0.1:9000

 listen redirect
    bind 127.0.0.1:9000
    http-request redirect scheme https

Это обсуждалось ранее с разработчиками, и, возможно, это будет реализовано в будущем

...