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

Как условно добавить заголовок Access-Control-Allow-Origin для шрифтов, обслуживаемых через X-Accel-Redirect в nginx

Я пытаюсь обслуживать некоторые веб-шрифты с помощью сценария PHP, который сообщает nginx о выполнении внутреннего перенаправления с использованием X-Accel-Redirect.

Поскольку сценарий обслуживает множество типов файлов, я хочу добавить только Access-Control-Allow-Origin заголовок для шрифтов.

Это работающая конфигурация, которую я пробовал:

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

  add_header Access-Control-Allow-Origin *;
}

Проблема с этим подходом заключается в том, что ВСЕ файлы теперь содержат Access-Control-Allow-Origin заголовок. Я хочу, чтобы у моих шрифтов был только этот заголовок.

Итак, я попробовал условное:

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

К сожалению, это не работает (и я подозреваю, что это произошло из-за внутреннего перенаправления с использованием X-Accel-Redirect).

Как можно добавить Access-Control-Allow-Oirgin заголовок для некоторых расширений, использующих X-Accel-Redirect?

Это выглядит как alias изменит файл запроса. Не успел скомпилировать и установить echo модуль для проверки, но использование следующей конфигурации устранило проблему:

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