Nginx 自建/反代Google Fonts 服务
Google字体好像不能用了,自己搭个服务吧。
Nginx 配置文件
upstream google {
server fonts.googleapis.com:80;
}
upstream gstatic {
server fonts.gstatic.com:80;
}
proxy_cache_path /home/wwwroot/fonts levels=1:2 keys_zone=cache1:100m inactive=30d max_size=2g use_temp_path=off;
server {
listen 80;
server_name fonts.fly2x.com;
location = / {
root /home/wwwroot/fonts_intro/;
index index.html;
}
location = /index.html {
root /home/wwwroot/fonts_intro/;
index index.html;
}
location /css {
sub_filter 'fonts.gstatic.com' 'fonts.fly2x.com';
sub_filter_once off;
sub_filter_types text/css;
proxy_pass_header Server;
proxy_set_header Host fonts.googleapis.com;
proxy_set_header Accept-Encoding '';
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://google;
proxy_cache cache1;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
expires 365d;
}
location / {
proxy_pass_header Server;
proxy_set_header Host fonts.gstatic.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://gstatic;
proxy_cache cache1;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
expires 365d;
}
}
server {
listen 443 ssl http2;
ssl on;
ssl_certificate /path/to/certfile.cer;
ssl_certificate_key /path/to/keyfile.key;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name fonts.fly2x.com;
location = / {
root /home/wwwroot/fonts_intro/;
index index.html;
}
location = /index.html {
root /home/wwwroot/fonts_intro/;
index index.html;
}
location /css {
sub_filter 'http://fonts.gstatic.com' 'https://fonts.fly2x.com';
sub_filter_once off;
sub_filter_types text/css;
proxy_pass_header Server;
proxy_set_header Host fonts.googleapis.com;
proxy_set_header Accept-Encoding '';
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://google;
proxy_cache cache1;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
expires 365d;
}
location / {
proxy_pass_header Server;
proxy_set_header Host fonts.gstatic.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://gstatic;
proxy_cache cache1;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 10m;
expires 365d;
}
}
说明
proxy_cache_path
/home/wwwroot/fonts
缓存存放的位置levels=1:2
所有缓存文件存放到同一目录会影响性能。可以设置目录层数为1-3层,每层名称长度为1-2个字符。此处的设置生成的缓存路径将类似于以下格式:
/home/wwwroot/fonts/c/29/b7f54b2df7773722d382f4809d65029c
keys_zone=cache1:50m
在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。inactive=30d
删除超过这个时间未使用的缓存。此处设置为30天。max_size=2g-
缓存占用的最大空间。此处设置为2G。use_temp_path=off
是否先将缓存放到临时目录,再转移到上面设置的缓存目录。此处关闭。
设置一个说明页面
加一个location = /
和location =/index.html
,写一个说明文件放进去吧。
参考链接
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。