Como eu adiciono condicionalmente o cabeçalho Access-Control-Allow-Origin para fontes servidas através de um X-Accel-Redirect no nginx

2

Estou tentando exibir alguns webfonts por meio de um script PHP que informa ao nginx para fazer um redirecionamento interno usando X-Accel-Redirect .

Como o script serve muitos tipos de arquivos, desejo adicionar apenas o cabeçalho Access-Control-Allow-Origin para fontes.

Esta é uma configuração que tentei que funciona:

location /deploys/ {
  internal;
  alias   /www/deploys/;
  expires 1y;

  add_header Access-Control-Allow-Origin *;
}

O problema com essa abordagem é que TODOS os arquivos agora contêm o cabeçalho Access-Control-Allow-Origin . Eu só quero que minhas fontes tenham esse cabeçalho.

Então, eu tentei um condicional:

location /deploys/ {
  internal;
  alias   /www/deploys/;
  expires 1y;

  if ($request_filename ~* ^.?/([^/]?)$)
  {
     set $filename $1; 
  }

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

Infelizmente, isso não funciona (e eu suspeito que seria devido ao redirecionamento interno usando 'X-Accel-Redirect').

Como é possível adicionar o Access-Control-Allow-Oirgin do cabeçalho para algumas extensões usando X-Accel-Redirect ?

    
por F21 28.01.2014 / 06:06

1 resposta

1

Parece que alias alterará o arquivo de solicitação. Eu não tive tempo para compilar e instalar o módulo echo para verificar, mas usando a seguinte configuração resolveu o problema:

location /deploys/ {
  internal;

  if ($request_filename ~* ^.?/([^/]?)$)
  {
     set $filename $1; 
  }

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

  alias   /www/deploys/;
  expires 1y;
}
    
por 28.01.2014 / 09:47