Некоторые инструменты я использую:
Я уверен, что существуют другие I "m не думающий в данный момент. Моим текущим фаворитом является, вероятно, DIskfire. Я также проверил бы форумы Xsanity, потому что они - эксперты в производительности диска OS X, особенно в Xsan.
Совершенно верно; обработка Varnish X-Forwarded-For
фактически просто определена в функции по умолчанию 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, но если ваша определенная функция всегда обрабатывает запрос, то логика по умолчанию никогда не будет выполняться.
Задайте vcl_recv
в следующих строках:
sub vcl_recv {
/* Your existing logic goes here */
/* After that, we'll insert the default logic, with the X-Forwarded-For handling removed */
/* The return (lookup); at the end ensures that the default append behavior won't have an impact */
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);
}
Изменить:
Поскольку Varnish обрабатывает некоторые соединения также напрямую, лучшим подходом может быть выборочная установка заголовка. Вы все равно захотите включить полный vcl_recv
, чтобы по умолчанию не применялся собственный заголовок, а включал его вверху:
if (req.restarts == 0) {
if (!req.http.x-forwarded-for) {
set req.http.X-Forwarded-For = client.ip;
}
}