2 votes

Comment ajouter conditionnellement l'en-tête Access-Control-Allow-Origin pour les polices servies par un X-Accel-Redirect dans nginx ?

J'essaie de servir des polices de caractères à travers un script PHP script qui demande à nginx de faire une redirection interne à l'aide de X-Accel-Redirect .

Comme le script sert de nombreux types de fichiers, je ne souhaite ajouter que l'élément Access-Control-Allow-Origin pour les polices.

Voici une configuration que j'ai essayée et qui fonctionne :

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

  add_header Access-Control-Allow-Origin *;
}

Le problème de cette approche est que TOUS les fichiers contiennent désormais la balise Access-Control-Allow-Origin l'en-tête. Je veux que seules mes polices aient cet en-tête.

J'ai donc essayé une conditionnelle :

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 *;
  }
}

Malheureusement, cela ne fonctionne pas (et je soupçonne que cela soit dû à la redirection interne utilisant `X-Accel-Redirect).

Comment s'y prendre pour ajouter le Access-Control-Allow-Oirgin pour certaines extensions utilisant X-Accel-Redirect ?

1voto

F21 Points 686

On dirait que alias modifiera le dossier de demande. Je n'ai pas eu le temps de compiler et d'installer le fichier echo pour vérifier, mais l'utilisation de la configuration suivante a résolu le problème :

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;
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X