Есть ли способ удалить apaches заголовки запроса обратного прокси? - PullRequest
13 голосов
/ 05 сентября 2011

При работе в качестве обратного прокси-сервера apache добавляет x-forwarded заголовки, как описано здесь.

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers

В моей конфигурации я настроил сервер A в качестве прямого прокси.Вот такое правило:

RewriteRule proxy:(.*example.com)/(.*) $1.mysecondserver.com/$2 [P]

Это правило позволяет серверу запрашивать ресурс у одного из моих других серверов.

На втором сервере (источник) у меня есть контейнер виртуального хостадля ресурса и другого правила переписывания, подобного этому:

RewriteRule some-regex some-url [P]

Может показаться, что это не имеет смысла, но есть много других вещей, которые я пропустил, поскольку это не является частью проблемы.

Однако в этом последнем запросе есть следующие заголовки:

[X-Forwarded-For] => ip of 1st server
[X-Forwarded-Host] => example.myseconserver.com
[X-Forwarded-Server] => example.com

Я хочу, чтобы эти заголовки были удалены.

Кажется, я не могу удалить их с помощью mod_headers.Я могу добавить к ним больше записей, но не могу их удалить.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 19 апреля 2018

Начиная с Apache 2, как говорит этот симпатичный ответ ,

ProxyAddHeaders Off

теоретически отключает его. По моему опыту, это не имело никакого эффекта. Однако в сочетании с

<Proxy *>
  ProxyAddHeaders Off
</Proxy>

а, с

  RequestHeader unset X-Forwarded-Host
  RequestHeader unset X-Forwarded-For
  RequestHeader unset X-Forwarded-Server

где-то это начало работать.

2 голосов
/ 09 апреля 2012

исправленный ответ: нет способа сделать это, так как его жестко закодировано

Чтобы исправить это в исходном коде mod_proxy_http.c, найдите следующую часть:

    apr_table_mergen(r->headers_in, "X-Forwarded-Server",
                 r->server->server_hostname);
}

и сразу после этого добавьте этот код:

// remove any X-Forwarded headers
apr_table_unset(r->headers_in, "X-Forwarded-For");
apr_table_unset(r->headers_in, "X-Forwarded-Host");
apr_table_unset(r->headers_in, "X-Forwarded-Server");

затем скомпилируйте, запустив apxs2 -cia mod_proxy_http.c

1 голос
/ 12 апреля 2016

У меня была такая же проблема на httpd 2.2 на CentOS 5. Установка httpd 2.4 была невозможна. Но по некоторым причинам я не смог полностью перейти на nginx. Поэтому я сделал это, вставив прокси nginx между httpd и адресом назначения. Итак, у меня было: httpd (localhost:80/path) -> nginx (localhost:81/path) -> http://your.destination/path. Шаги установки следующие:

  1. Установите nginx в соответствии с этими инструкциями
  2. Настройте nginx, чтобы избежать проблем с безопасностью.
  3. Добавьте местоположение в nginx, которое удалит заголовки запроса обратного прокси httpd. Это может выглядеть так:

    location /path {
        proxy_set_header x-forwarded-for "";
        proxy_set_header x-forwarded-host "";
        proxy_set_header x-forwarded-server "";
        proxy_pass http://your.destination/path;
    }
    
...