Я добавил эти правила в mime.types
:
application/x-font-ttf ttf;
font/opentype otf;
application/vnd.ms-fontobject eot;
font/x-woff woff;
Теперь заголовок Content-Type настраивается правильно для каждого из них. Моя единственная проблема сейчас в том, что Firefox требует Access-Control-Allow-Origin. Я погуглил это ответ и добавил это в мою директиву сервера:
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
но теперь мои шрифты вообще не обслуживаются.
Вместо этого error.log
сообщает, что пытается открыть их в локальной файловой системе ..
02.10.2010 22:20:21 [ошибка] 1641 # 0: * 15 open () "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" не удалось (2: нет такого файла или каталога) , клиент: 69.164.216.142, сервер: static.arounds.org, запрос: «HEAD /fonts/mgopenmodernabold-webfont.woff HTTP / 1.1», хост: «static.arounds.org»
Есть идеи, что может быть не так с синтаксисом? Мне нужно явно добавить правило, говорящее, что не пытайтесь открывать его локально или что?
РЕДАКТИРОВАТЬ: Думаю, проблема в том, что сейчас я обслуживаю 2 разных места. И вместо этого я должен выполнить проверку регулярного выражения внутри основного, а затем передать заголовок.
Woot! Понятно ... Это было в значительной степени то, что я подозревал в своем редактировании, мне пришлось в основном проверять имя файла регулярного выражения в своей единственной location {}
вместо того, чтобы сделать альтернативный.
location / {
root /www/site.org/public/;
index index.html;
if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
}
if ($filename ~* ^.*?\.(eot)|(ttf)|(woff)$){
add_header Access-Control-Allow-Origin *;
}
}
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
Это заставит все активы работать нормально. Можете добавить root
если вы хотите определить новое местоположение
location ~ \.(js|css|png|jpg|jpeg|gif|ico|html|woff|woff2|ttf|svg|eot|otf)$ {
add_header "Access-Control-Allow-Origin" "*";
expires 1M;
access_log off;
add_header Cache-Control "public";
}
другое решение: поместите все свои шрифты, например, static/fonts
, и добавить
location /static/fonts {
add_header "Access-Control-Allow-Origin" *;
alias /var/www/mysite/static/fonts;
}