Избегайте mod_status Apache, выставляемого Лаком

~/.inputrc:

set bell-style none
2
задан 3 November 2010 в 11:47
3 ответа

Это похоже на решение, скажите мне, что Вы думаете.

Varnish добавляет некоторые HTTP-заголовки как X-Varnish к каждому запросу это отправляет к бэкенду. Они могут использоваться в конфигурации Apache для распознавания запросов, прибывающих из Лака.

В /etc/apache2/mods-enabled/status.conf:

<IfModule mod_status.c>

SetEnvIf X-Varnish ".+" from_varnish
ExtendedStatus On

<Location /server-status>
    SetHandler server-status
    Order allow,deny
    Deny from env=from_varnish
    Allow from localhost ip6-localhost 127.0.0.1

</Location>

</IfModule>

Затем скажите munin порту монитора 8080 вместо 80. Запросы от munin-node прибудет непосредственно и так не будет иметь X-Varnish заголовок установлен.

Добавленный к /etc/munin/plugin-conf.d/munin-node:

[apache_*]
env.url   http://127.0.0.1:%d/server-status?auto
env.ports 8080
1
ответ дан 3 December 2019 в 10:22

Я обращаюсь к этому, гарантируя, что Apache получит IP-адрес фактического посетителя, даже когда запросы проходят через кеш-память varnish. Для этого я использую Apache mod_rpaf (см. http://giantdorks.org/alain/easily-get-the-correct-client-ip-with-mod_rpaf/ ).

Также на всякий случай запрос клиента также прошел через некоторый прокси, который установил заголовок X-Forwarded-For, я сбрасываю его в своем экземпляре кэша varnish (в vcl_recv):

  remove req.http.X-Forwarded-For;
  set    req.http.X-Forwarded-For = client.ip;

Затем также указываю varnish никогда не кэшировать ответ для / server-status и / информация о сервере. У меня работает следующее (также в vcl_recv):

  if (req.url ~ "server-(info|status)") {
    return (pass);
  }
3
ответ дан 3 December 2019 в 10:22

У меня была такая же ситуация с Ubuntu 12.04, Apache2 на порту 8008 и Varnish на порту 80. С Varnish VCL я использовал мою страницу состояния сервера, которая была кэширована в течение часа, поэтому она все еще была доступен, но предоставил отчет о состоянии только после обновления кеша. Внедрение решения Алена сделало текущий статус сервера доступным через Varnish по мере его передачи в бэкэнд. Чтобы защитить свой статус сервера, я сделал следующее:

Я сконфигурировал munin-node для прослушивания 8008 в /etc/munin/plugin-conf.d/munin-node:

[apache_*]
env.url   http://127.0.0.1:%d/server-status?auto
env.ports 8008

. Затем я добавил следующую строку в свой VCL в верхней части раздела vcl_recv:

if (req.url ~ "^/server-status") {
error 403;
}

Это блокирует доступ к URL-адресу server-status на порту 80 с запрещенным сообщением 403, но munin-node все еще может подключиться к server-status на localhost: 8008

Это сообщение был полезен: http: // nwlinux. com / how-to-configure-varnish-on-ubuntu-server /

0
ответ дан 3 December 2019 в 10:22

Теги

Похожие вопросы