Я переместил установку piwik с сервера apache на nginx, используя лак и memcached. Я не уверен, когда, но в какой-то момент он перестал позволять мне войти, выдав ошибку:
Ошибка: безопасность формы не удалась. Пожалуйста, перезагрузите форму и проверьте, что
ваши куки включены. Если вы используете прокси-сервер, вы должны
настроить Piwik для принятия заголовка прокси, который перенаправляет хост
заголовок. Также убедитесь, что ваш заголовок Referrer отправлен правильно.
Я не уверен, в чем здесь проблема, потому что она работала некоторое время, пока я не вышел из системы. Я не уверен, в какой момент это остановилось, но я установил memcached позже, я полагаю.
Я попытался положить:
proxy_client_headers[] = HTTP_X_FORWARDED_FOR
proxy_host_headers[] = HTTP_X_FORWARDED_HOST
В конфиге piwik это не помогло.
В конфиге лака я ставлю под vcl_recv:
if (req.url ~ "piwik" {
set req.http.X-Forwarded-For = client.ip;
return (pass);
}
Это тоже не помогло.
Я в конце моего остроумия здесь. Кто-нибудь знает, что может быть не так в моей конфигурации, или как я мог узнать? Я попытался поместить return (pass) в верхнюю часть vcl_recv (предполагая, что это в основном отключит все кэширование лака), и это не помогло. Есть ли способ отладки piwik, чтобы понять, в чем проблема? Спасибо!
ОБНОВИТЬ: После сильной головной боли я понял, что на самом деле это случай неправильного кэширования piwik. Я не мог придумать рабочее решение (я попробовал решения, предлагаемые здесь).
В конечном итоге, мое решение: Я сделал, чтобы лак слушал на порту 80, но piwik слушает на порту 85 с nginx вместо этого, полностью обходя лак. Все снова работает на 100%! Это, очевидно, не самый идеальный вариант решения, но он работает, и это спасает меня от разочарований, которые следует потратить в другом месте. Спасибо всем за помощь.
Я не уверен в этом, но Form security failed
предложил бы мне, что, возможно, Varnish кэшировал страницу входа в систему. И я думаю, что в форме входа есть маркер CSRF (уникальный идентификатор), который меняется каждый раз.
Поэтому, возможно, из-за кеша токен CSRF всегда одинаков и поэтому недопустим при попытке входа в систему. Не могли бы вы настроить Varnish, чтобы форма входа не кэшировалась?
Вы должны обходить лак при использовании piwik
sub vcl_recv {
if (req.url ~ "^/piwik(.*)") {
return(pass);
}
}
если вы используете поддомен
sub vcl_recv {
if (req.http.Host == "piwik.domain.com") {
return (pipe);
}
}