Назад | Перейти на главную страницу

как отключить лак X Forwarded For заголовок

я использую 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);
}