Статьи

Одиночные оболочки оболочки лака: перезагрузить конфигурацию, очистить кэш и проверить результаты

Varnish — это демон кэширования на стороне сервера. На нашем рабочем сервере Varnish прослушивает порт HTTP 80 и работает в кэше внешнего интерфейса рабочего сервера; мы используем его в основном для быстрой и быстрой работы с JS, CSS и статическими изображениями.

Этот пост основан на стандартной установке Varnish Ubuntu / Debian с использованием apt-get . Эти инструкции были протестированы на Ubuntu 12.04 LTS и Varnish 3.0.2.

1. Перезагрузить отредактированные лаковые конфиги

Правила кэширования лака находятся в папке / etc / varnish . Точка входа конфигурации (основной файл) — /etc/varnish/default.vcl. Сам демон (порты и т. Д.) Настраивается с помощью / etc / defaults / varnish .

Varnish управляется утилитой varnishadm. Вы можете использовать ее в консольном режиме или выполнять непосредственную оценку команд (например, shell, MySQL client). В Ubuntu / Debian по умолчанию для установки Varnish достаточно команды varnishadm . Однако при пользовательской настройке вам может потребоваться направить его на специальный консольный порт или указать секретный файл.

Загрузка конфигурации лака состоит из 2 этапов:

  • Разобрать и загрузить файл cfg в память Varnish и дать ему дескриптор, который вы позже сможете использовать
  • Активировать конфигурацию дескриптором (возможно только в случае успешного выполнения шага 1)

Ниже приведен однострочный сценарий оболочки, который генерирует случайный дескриптор и использует его для загрузки конфигурации, если она успешно анализируется.

HANDLE=varnish-cfg-$RANDOM ; \
  varnishadm vcl.load $HANDLE /etc/varnish/default.vcl && \
  varnishadm vcl.use $HANDLE

2. Очистка кэша Varnish из командной строки

Еще один полезный фрагмент кода — очистить весь кеш Varnish из командной строки (аннулировать весь кеш):

varnishadm "ban.url ."  # Matches all URLs

Примечание: команда является purge.url в Varnish 2.x.

Кэш хранится в виде файла общей памяти в /var/lib/varnish/$INSTANCE/varnish_storage.bin . Когда Varnish запущен, он должен отобразить 1 ГБ (по умолчанию) вашей виртуальной памяти в этот файл (как видно из ps , вверху ).

Вы также можете забанить по имени хоста:

varnishadm "ban req.http.host == opensourcehacker.com"

Вот транскрипт оболочки, где мы видим, что запрет работает, как и предполагалось, с помощью утилиты wget.

# Go to /tmp because wget leaves files around
cd /tmp

# 1st load: uncached file, one X-Varnish stamp
wget -S http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg

--2013-02-06 20:02:18--  http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg
Resolving opensourcehacker.com (opensourcehacker.com)... 188.40.123.220
Connecting to opensourcehacker.com (opensourcehacker.com)|188.40.123.220|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Server: Apache/2.2.22 (Ubuntu)
  Last-Modified: Sun, 14 Aug 2011 22:55:01 GMT
  ETag: "2000893-108ec-4aa7f09555b40"
  Cache-Control: max-age=3600
  Expires: Wed, 06 Feb 2013 23:02:19 GMT
  Content-Type: image/jpeg
  Content-Length: 67820
  Accept-Ranges: bytes
  Date: Wed, 06 Feb 2013 22:02:19 GMT
  X-Varnish: 705602514

# 2st load: cached file, two X-Varnish stamps
wget -S http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg
--2013-02-06 20:02:21--  http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg
Resolving opensourcehacker.com (opensourcehacker.com)... 188.40.123.220
Connecting to opensourcehacker.com (opensourcehacker.com)|188.40.123.220|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Server: Apache/2.2.22 (Ubuntu)
  Last-Modified: Sun, 14 Aug 2011 22:55:01 GMT
  ETag: "2000893-108ec-4aa7f09555b40"
  Cache-Control: max-age=3600
  Expires: Wed, 06 Feb 2013 23:02:19 GMT
  Content-Type: image/jpeg
  Content-Length: 67820
  Accept-Ranges: bytes
  Date: Wed, 06 Feb 2013 22:02:22 GMT
  X-Varnish: 705602515 705602514

# Purge
varnishadm "ban.url ."

# It's non-cached again
wget -S http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg
--2013-02-06 20:02:34--  http://opensourcehacker.com/wp-content/uploads/2011/08/Untitled-41.jpg
Resolving opensourcehacker.com (opensourcehacker.com)... 188.40.123.220
Connecting to opensourcehacker.com (opensourcehacker.com)|188.40.123.220|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Server: Apache/2.2.22 (Ubuntu)
  Last-Modified: Sun, 14 Aug 2011 22:55:01 GMT
  ETag: "2000893-108ec-4aa7f09555b40"
  Cache-Control: max-age=3600
  Expires: Wed, 06 Feb 2013 23:02:35 GMT
  Content-Type: image/jpeg
  Content-Length: 67820
  Accept-Ranges: bytes
  Date: Wed, 06 Feb 2013 22:02:35 GMT
  X-Varnish: 705602516

3. Перезапустите Varnish в Ubuntu.

Это вызывает сброс конфигурации, не будучи уверенным в том, что хранилище файлов кэша будет сброшено (?).

service varnish restart

4. Дальнейшие идеи

Если кто-то знает, где взять подсветку синтаксиса Varnish VCL для Sublime Text 2 (TextMate), которая облегчит мою жизнь, используйте в комбинации плагин SFTP.