如何有条件地为通过nginx中的X-Accel-Redirect提供的字体添加Access-Control-Allow-Origin头

我试图通过一个PHP脚本来告诉nginx使用X-Accel-Redirect进行内部X-Accel-Redirect

由于脚本提供了许多types的文件,我只希望为字体添加Access-Control-Allow-Origin标头。

这是我尝试过的configuration

 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的内部redirect)。

如何使用X-Accel-Redirect为一些扩展添加Access-Control-Allow-Oirgin头?

它看起来像alias会改变请求文件。 我没有时间编译和安装echo模块来validation,但是使用下面的configuration修复了这个问题:

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