я использую nginx <=> varnish <=> apache
я передаю клиентский IP в лак через nginx proxy_set_header X-Forwarded-For $ remote_addr;
но лак также добавляет X-Forwarded-For как 127.0.0.1, поэтому apache показывает 2 IP-адреса на основе запятой.
мне нужен IP, отправленный только nginx, я хочу отключить добавление лака 127.0.0.1
версия лака 3.0.0 здесь default.vcl
бэкэнд по умолчанию {.host = "204.29.58.4"; .port = "80"; } sub vcl_recv {если (req.http.Range) {возврат (труба); }}
По умолчанию vcl_recv
функция (которая добавляется к вашей) содержит следующее:
if (req.restarts == 0) {
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
.. который изменяет заголовок. Чтобы этого не случилось, у вас должна быть vcl_recv
реализована как полная функция, которая всегда возвращает, вместо того, чтобы зависеть от добавления поведения по умолчанию, которое содержит конфигурацию, которая вам не нужна. Что-то вроде этого:
sub vcl_recv {
if (req.http.Range) {
return(pipe);
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
/* Non-RFC2616 or CONNECT which is weird. */
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
/* We only deal with GET and HEAD by default */
return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
/* Not cacheable by default */
return (pass);
}
return (lookup);
}