只是把我的网站从一个共享主机转移到了Linode的VPS上,而且我对nginx也是全新的,所以如果我错过了一些明显的东西,请不要苛刻^^
我的WordPress网站在Nginx和MaxCDN上运行得非常好,但我的@ font-face字体(从cdn.domain.com提供)在IE9和FF中停止工作(@ font-face失败的跨源请求。受到限制。)
我GOOGLE了几个小时,并尝试添加以下所有到我的configuration文件:
location ~* ^.+\.(eot|otf|ttf|woff)$ { add_header Access-Control-Allow-Origin *; } location ^/fonts/ { add_header Access-Control-Allow-Origin *; } location / { if ($request_filename ~* ^.*?/([^/]*?)$) { set $filename $1; } if ($filename ~* ^.*?\.(eot)|(otf)|(ttf)|(woff)$){ add_header 'Access-Control-Allow-Origin' '*'; } }
当然,每次更改之后我都重新启动了nginx。
不pipe我做什么,标题都不会被发送。
我有默认的Ubuntu的apt-get构buildnginx的默认应该包括头模块…如何检查什么模块安装,或者还有什么可能导致此错误?
更新:
我试过运行curl -I [location-of-the-font] ,它确实返回Access-Control-Allow-Origin: *但是在Chrome的“networking”面板中该标题不可见,并且字体在FF中仍然不起作用&IE9(CSS3117:@ font-face失败的跨源请求,资源访问被限制) – 任何想法可能导致这个?
唯一可以给出的build议是,您必须(1)确保清除浏览器中的caching,并(2)确保add_header存在于适当的级别。
在任何地方定义它都没有多大意义。 如果所有字体都是在location /fonts ,那么这是唯一必须声明合适的add_header ,并且还必须确保没有其他子位置具有任何其他add_header指令,因为这会重置所有事先add_header方向在前面的级别。