我正在尝试通过 PHP 脚本提供一些 webfonts,该脚本告诉 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
?
答案1
看起来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;
}