перепишите условие предназначаться Через: Лак 1.1

Когда Вы вошли в систему, действительно ли возможно, что Ваша сессия оболочки имела taskset в .profile/.bashrc/whatever, который заблокировал Вашу привязку CPU? Если я вспоминаю, они удалили опции привязки CPU из fcgi в 2007 или около этого.

0
задан 12 April 2012 в 05:25
2 ответа

У меня здесь нет Varnish для тестирования, но мне кажется, что вы не избегаете простого текста в своем RewriteCond. Шаблон всегда считается регулярным выражением, поэтому пробелы и точки имеют особое значение. Попробуйте:

RewriteCond %{HTTP:Via} =1\.1\ varnish
RewriteRule ^node / [R=301,NC,L]

Кстати, это немного запутанный способ делать что-то. Обычно вы проверяете заголовок X-Forwarded-By, чтобы определить, находитесь ли вы за прокси-сервером. Поскольку они могут быть подделаны и / или добавлены вышестоящими прокси, вам следует либо:

  1. В VCL varnish удалить все заголовки X-Forwarded-By из запроса и повторно добавить свой собственный OR
  2. добавить в настраиваемый заголовок (скажем: X-Real-Forwarded-By) и проверьте его наличие в вашем .htaccess
1
ответ дан 4 December 2019 в 14:30

Поскольку Varnish не предназначен для этого, вы должны использовать для этого небольшой трюк.

Для отправки HTTP-перенаправления лучший способ - подготовить конкретный обработчик ошибок и поднимите этот обработчик ошибок в зависимости от ваших требований.

Шаг 1) Подготовьте обработчик ошибок для отправки перенаправления

sub vcl_error {
  ...
  # redirect
  if (obj.status == 750) {
    set obj.status = 301;
    set obj.http.Location = "http://www.error-location.com/";
    return (deliver);
  }
  ...
}

Шаг 2) Поднимите подготовленный обработчик ошибок

sub vcl_recv {
  ...
  # raise error if someone requests /node
  if (req.url ~ "^/node") {
    error 750;
  }
  ...
}

В качестве альтернативы вы можете настроить обработчик ошибок для использования динамической цели

sub vcl_error {
  ...
  # redirect to dynamic target
  if (obj.status == 750) {
    set obj.status = 301;
    set obj.http.Location = obj.response;
    return (deliver);
  }
  ...
}

...

sub vcl_recv {
  ...
  # redirect, if someone requests /node
  if (req.url ~ "^/node") {
    error 750 "http://www.error-location.com/";
  }
  ...
}
1
ответ дан 4 December 2019 в 14:30

Теги

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