Como posso fazer o suporte a nginx @ formatos de face de fonte e permitir acesso-controle-permitir-origem?

20

Adicionei estas regras a mime.types :

application/x-font-ttf                ttf;
font/opentype                         otf;
application/vnd.ms-fontobject         eot;
font/x-woff                           woff;

Agora, o cabeçalho Content-Type está sendo definido corretamente para cada um deles. Meu único problema agora é que o Firefox requer Access-Control-Allow-Origin. Eu pesquisei esta resposta e adicionei esta para minha diretiva de servidor:

location ~* \.(eot|ttf|woff)$ {
    add_header Access-Control-Allow-Origin *;
}

mas agora minhas fontes não estão sendo veiculadas.

Em vez disso, o error.log informa que está tentando abri-los no sistema de arquivos local.

2010/10/02 22:20:21 [error] 1641#0: *15 open() "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" failed (2: No such file or directory), client: 69.164.216.142, se rver: static.arounds.org, request: "HEAD /fonts/mgopenmodernabold-webfont.woff HTTP/1.1", host: "static.arounds.org"

Alguma idéia do que poderia estar errado com a sintaxe? Preciso adicionar explicitamente uma regra dizendo que não tente abri-la localmente ou o quê?

EDIT : Eu acho que o problema é que eu estou servindo 2 locais diferentes agora. E, em vez disso, devo fazer a verificação de regex dentro da principal e depois alimentar o cabeçalho.

    
por meder omuraliev 03.10.2010 / 00:28

4 respostas

19

Woot! Entendi .. Era praticamente o que eu suspeitava na minha edição, eu tinha que basicamente fazer a verificação do nome do arquivo regex no meu único location {} ao invés de fazer um alternativo.

    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 *;
            }
    }
    
por 03.10.2010 / 00:36
11
location ~* \.(eot|ttf|woff)$ {
    add_header Access-Control-Allow-Origin *;
}
    
por 11.08.2011 / 06:07
5

Todos os recursos

Isso fará com que todos os ativos funcionem bem. Você pode adicionar root se quiser definir um novo local

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";
}
    
por 16.06.2014 / 18:54
3

outra solução: coloque todas as suas fontes, por exemplo, static/fonts e adicione

location /static/fonts  {
    add_header "Access-Control-Allow-Origin" *;
    alias /var/www/mysite/static/fonts;
}
    
por 10.06.2016 / 10:25