Назад | Перейти на главную страницу

nginx + @ font-face + Firefox / IE9

Я только что перенес свой сайт с общего хостинга на 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 направления на предыдущих уровнях.