Настройка сервера для работы с Safari
Для улучшения сбора данных и таргетинга рекламы в браузере Safari необходимо настроить обновление cookie _ym_uid
на сервере. Этот тип cookie помогает идентифицировать посетителей сайта.
Логика обновления cookie
Если в заголовке запроса Cookie
присутствует _ym_uid
, сервер должен отправить Set-Cookie
с тем же значением _ym_uid
и установить срок его действия на 1 год.
Аналогично с _ym_d
— этот cookie-файл содержит время создания _ym_uid
.
Инструкция для сервера nginx
Сначала отредактируйте файл конфигурации nginx.
Примечание
Путь к файлам конфигурации может отличаться в зависимости от настроек вашего сервера.
sudo nano /etc/nginx/sites-enabled/default
Простой способ
Внимание
Если вы используете директиву add_header
для установки других заголовков или if
для условного роутинга, этот способ вам не подходит. Необходимо использовать продвинутый способ во избежание нежелательного поведения.
В каждом блоке location
добавьте следующий код (его можно разместить в любом месте блока):
Примечание
Если ваш сервис не использует протокол HTTPS, удалите из заголовка параметр Secure;
.
Если ваш сервис использует субдомены, используйте корневой домен вместо переменной $host
(например, example.com
для сайта sales.example.com
).
# Обновление куки Яндекс.Метрики
if ($cookie__ym_uid) {
set $ym_postfix "Max-Age=31536000;Secure;Path=/;Domain=.$host";
add_header Set-Cookie "_ym_uid=$cookie__ym_uid;$ym_postfix";
add_header Set-Cookie "_ym_d=$cookie__ym_d;$ym_postfix";
add_header Set-Cookie "_ym_ucs=nginx;$ym_postfix";
}
Продвинутый способ
Примечание
Название пакета и способ установки могут отличаться на вашем сервере.
-
Установите модуль
lua
для nginx.sudo apt install libnginx-mod-http-lua
-
В каждом блоке
server
добавьте следующий код (его можно разместить в любом месте блока):Примечание
Если ваш сервис не использует протокол HTTPS, удалите из заголовка параметр
Secure;
.Если ваш сервис использует субдомены, используйте корневой домен в кавычках вместо переменной
ngx.var.host
(например,example.com
для сайтаsales.example.com
).# Обновление куки Яндекс.Метрики header_filter_by_lua_block { if ngx.var.cookie__ym_uid and ngx.var.host then local ym_postfix = "Max-Age=31536000; Secure; Path=/; Domain=." .. ngx.var.host ngx.header["Set-Cookie"] = { "_ym_uid=" .. ngx.var.cookie__ym_uid .. "; " .. ym_postfix, "_ym_d=" .. (ngx.var.cookie__ym_d or "") .. "; " .. ym_postfix, "_ym_ucs=nginx; " .. ym_postfix } end }
Завершающие шаги
Проверьте корректность конфигурации:
sudo nginx -t
После проверки обновите конфигурацию nginx:
sudo service nginx reload
Чтобы проверить, правильно ли настроен сервер:
- В браузере Safari откройте ваш сайт.
- В меню выберите Safari → Настройки (Settings).
- На вкладке Дополнительно (Advanced) поставьте галочку Показывать функции для веб-разработчиков (Show features for web developers).
- Откройте режим разработчика с помощью клавиш
Cmd+Opt+I
и перезагрузите страницу. - В режиме разработки выберите пункт Разработка (Network) в меню.
- Найдите первый запрос и проверьте, что заголовок выставляется в поле Ответ (Response).