Я на ранней стадии тестирования Лак 3.0.4 как новый интерфейс для веб-службы. У меня varnish настроен для прослушивания порта 88. В качестве бэкэнда он использует существующий сервер apache, работающий на том же хосте на порту 80.
У меня проблема в том, что когда лак делает запрос к apache, он включает ": 88" в Host
HTTP-заголовок (хотя он определенно подключается к apache через порт 80.
Например:
http://www.myservice.com:88/images/foo.gif
. Он запрашивает серверную часть.HOST
заголовок в журнал доступа Apache - используя %{Host}
в формате файла журналаwww.myservice.com:88
не www.myservice.com
.Если я подключаюсь к этому серверу apache с помощью telnet и делаю идентичные запросы HEAD, но изменяю значение параметра Host
заголовок, я наблюдаю то же поведение, которое я наблюдаю через varnish - то есть, если я включу: 88 в заголовок хоста, запрос вернет 404.
Я пробовал:
req.http.header.port
и beresp.http.header.port
к 80
req.http.header.host
и beresp.http.header.host
к www.myservice.com
.Кажется, я упускаю что-то очевидное.
Как мне получить лак для отправки правильного заголовка хоста в apache?
Лак оставляет Host
По умолчанию заголовок полностью не подвергается воздействию - он отправляет в Apache то, что ему было отправлено. Это предполагаемое поведение - Varnish имеет тенденцию ни с чем не возиться, если вы этого не скажете.
Чтобы управлять им, поместите что-то подобное в свой vcl_recv
, в дополнение к любой условной логике вам необходимо добавить:
set req.http.Host = "www.myservice.com";