med*_*iev 28 nginx http-headers
我已将这些规则添加到mime.types:
application/x-font-ttf ttf;
font/opentype otf;
application/vnd.ms-fontobject eot;
font/x-woff woff;
Run Code Online (Sandbox Code Playgroud)
现在,每一个都正确设置了 Content-Type 标头。我现在唯一的问题是 Firefox 需要 Access-Control-Allow-Origin。我用谷歌搜索了这个答案并将其添加到我的服务器指令中:
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)
但现在我的字体根本没有提供。
相反,error.log报告说它试图在本地文件系统上打开它们..
2010/10/02 22:20:21 [error] 1641#0: *15 open() "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" 失败 (2: 没有那个文件或目录) ,客户端:69.164.216.142,服务器:static.arounds.org,请求:“HEAD /fonts/mgopenmodernabold-webfont.woff HTTP/1.1”,主机:“static.arounds.org”
任何想法可能与语法有关?我是否需要明确添加一条规则,说不要尝试在本地打开它或什么?
编辑:我认为问题是我现在服务于 2 个不同的地点。而不是我应该在主要的内部进行正则表达式检查,然后提供标题。
med*_*iev 26
哇!明白了.. 这几乎是我在编辑中所怀疑的,我基本上必须在我的鞋底进行正则表达式文件名检查,location {}而不是进行替代。
location / {
root /www/site.org/public/;
index index.html;
if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
}
if ($filename ~* ^.*?\.(eot)|(ttf)|(woff)$){
add_header Access-Control-Allow-Origin *;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 13
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)
如果您有其他字体扩展名,请密切注意添加它们。现在通常有:eot|ttf|woff|woff2|svg,所以你应该像这样调整:
location ~* \.(eot|ttf|woff|woff2|svg)$ {
add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
这将使所有资产正常工作。root如果要定义新位置,可以添加
location ~ \.(js|css|png|jpg|jpeg|gif|ico|html|woff|woff2|ttf|svg|eot|otf)$ {
add_header "Access-Control-Allow-Origin" "*";
expires 1M;
access_log off;
add_header Cache-Control "public";
}
Run Code Online (Sandbox Code Playgroud)
小智 5
另一个解决方案:将所有字体放入,例如,static/fonts然后添加
location /static/fonts {
add_header "Access-Control-Allow-Origin" *;
alias /var/www/mysite/static/fonts;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52467 次 |
| 最近记录: |