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

В вики Varnish Cache приводится пример того, как regsub избежать кэширования запросов к www.example.com и example.com по отдельности. Пример из https://www.varnish-cache.org/trac/wiki/RedirectsAndRewrites< /а> это:

set req.http.host = regsub(req.http.host, "^www\.example\.com$","example.com");

«Запросы к www.example.com и example.com будут отправлены на сервер как «example.com» и в конечном итоге будут кэшированы этой строкой». Это означает, что дублированное кэширование не происходит.

У меня есть несколько сайтов, использующих один и тот же сервер лака (VCL), поэтому я хочу заменить «example.com» оператором, который будет работать с несколькими URL-адресами. например:

www.example1.co.uk > example1.co.uk
www.example2.com > example2.com

Каким будет подходящее регулярное выражение (если это правильный термин) для этого?

Существует несколько отдельных доменов (разные сайты с разным контентом в разных доменах), использующих этот VCL. Я надеюсь избежать необходимости изменять vcl при добавлении/удалении новых сайтов. Поэтому мне нужно универсальное решение, которое можно применить к любому домену, чтобы исключить возможность дублирования с/без WWW-псевдонима, хранящегося/обслуживаемого Varnish. (У меня проблемы с формулировкой этого, надеюсь, это яснее !!)

Я знаю, что перенаправление можно сделать за пределами лака, в Apache и т. Д., Но не ищу это как решение.


person Taylor Taff    schedule 30.03.2014    source источник


Ответы (2)


set req.http.host = regsub(req.http.host,
                           "^www\.(.*)$",
                           "\1");

Это удалит www с любого домена. (Мне не хочется давать вам этот ответ, так как он противоречит моей религии)

Вы можете быть оштрафованы поисковыми системами за показ одного и того же контента по нескольким URL-адресам, но SEO — это отдельная тема.

person Chris Wesseling    schedule 30.03.2014
comment
благодаря. Я не думаю, что я объяснил вопрос должным образом. Поскольку существует несколько сайтов, я не хочу называть домен, просто применю общее правило, которое будет применяться к любым запросам. то есть не иметь «примера» в решении. Попытаюсь уточнить вопрос. - person Taylor Taff; 30.03.2014
comment
@TaylorTaff, я изменил ответ. Пожалуйста, скорректируйте вопрос. - person Chris Wesseling; 30.03.2014
comment
Спасибо, это выглядит здорово! Вопрос скорректирован. Поскольку это противоречит вашей религии (я согласен с вами!), как бы вы добавили «www» к каждому запросу? Я проверю через некоторое время, а затем отмечу как правильный. - person Taylor Taff; 30.03.2014
comment
@TaylorTaff Проверьте страницу перенаправления на сайте www.yes-www.org. Перенаправление также решит проблему с отображением одного и того же контента на нескольких URL-адресах. - person Chris Wesseling; 30.03.2014

Вместо того, что предложил Крис, вы можете просто удалить часть www:

set req.http.host = regsub(req.http.host, "^www\.", "");

Тоже должно быть чуточку быстрее

person dark_skeleton    schedule 10.04.2014