Я только что перенес свой сайт с общего хостинга на VPS Linode, и я также совершенно не знаком с nginx, поэтому, пожалуйста, не будьте резкими, если я пропустил что-то очевидное ^^
У меня мой сайт WordPress работает довольно хорошо на nginx и MaxCDN, но мои шрифты @ font-face (обслуживаемые cdn.domain.com) перестали работать в IE9 и FF (@ font-face не удалось выполнить запрос на кросс-источник. Доступ к ресурсам ограничено.)
Я часами гуглил и пытался добавить в свои файлы конфигурации все следующее:
location ~* ^.+\.(eot|otf|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
location ^/fonts/ {
add_header Access-Control-Allow-Origin *;
}
location / {
if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
}
if ($filename ~* ^.*?\.(eot)|(otf)|(ttf)|(woff)$){
add_header 'Access-Control-Allow-Origin' '*';
}
}
Конечно, я перезапускал nginx после каждого изменения.
Заголовки просто не отправляются вообще, что бы я ни делал.
У меня есть Ubuntu по умолчанию apt-get build nginx, который по умолчанию должен включать модуль заголовков ... Как мне проверить, какие модули установлены, или что еще может вызвать эту ошибку?
ОБНОВИТЬ:
Я пробовал бежать curl -I [location-of-the-font]
и он возвращается Access-Control-Allow-Origin: *
но заголовок не отображается на панели «Сеть» Chrome, а шрифты по-прежнему не работают в FF и IE9 (CSS3117: @ font-face не удалось выполнить запрос с перекрестным происхождением. Доступ к ресурсам ограничен.) - Есть идеи, что может быть причиной этого?
Единственное предложение, которое можно было бы сделать, это то, что вы должны: (1) убедиться, что вы очистили кеш в своем браузере, и (2) убедиться, что add_header
присутствует на соответствующем уровне.
Нет особого смысла определять его везде. Если все ваши шрифты обслуживаются изнутри location /fonts
, то это единственное место, где вы должны объявить соответствующий add_header
, и вы также должны убедиться, что в других подразделениях нет других add_header
директивы, потому что это сбросит все предыдущие add_header
направления на предыдущих уровнях.