科大博客提供 Google Fonts 加速

由于 fonts.googleapis.com 在国内访问不稳定,USTC Blog 某些主题中的字体加载不出来。现在 LUG 提供了 Google Fonts 加速服务,已经把 WordPress 原始代码和用户主题内的 Google 字体和 CSS、JS 文件替换成了 LUG 的代理,以加速字体的显示。

事实上 360 网站卫士已经提供了 Google Fonts 加速服务(libs.useso.com),但不支持 HTTPS。HTTPS 博客内只能引用 HTTPS 资源,因此不能用他们的服务,只好自建了。我们的做法与他们类似,我们的服务器通过“国际专线”(你懂的)对用户的请求做代理,并修改 HTTP 响应内容中的 URL(例如 fonts.googleapis.com 中会引用 themes.googleusercontent.com 的资源)。感谢 雨路 和 stephen 的建议。

如果您的博客不在科大 LUG 上,也想使用加速服务,请在 WordPress 源码内进行如下替换:

  1. ajax.googleapis.com => ajax.lug.ustc.edu.cn
  2. fonts.googleapis.com => fonts.lug.ustc.edu.cn
  3. themes.googleusercontent.com => google-themes.lug.ustc.edu.cn

如果您的科大博客在此修改之后出现无法显示字体的问题,请联系我们:support (at) blog.ustc.edu.cn。

《科大博客提供 Google Fonts 加速》上有58条评论

  1. 是否将域名规范一下,以便更好的管理。

    例如使用 ${upstream_fqdn}.proxy.lug.ustc.edu.cn,这样将来配置新的cache在管理上会更容易。否则若干时间后,后面的维护者看到 {ajax,fonts}.lug.ustc.edu.cn 这样的域名可能会不清楚具体用途。

    不知道泛域名是否支持多层的,就是 ${upstream_fqdn}.proxy.lug.ustc.edu.cn 能否使用 *.proxy.lug.ustc.edu.cn 的cert?如果不能的话,那么创建key会比较麻烦,不过毕竟这是一次性的effort。

    1. 反域名不支持多层的,SSL 证书里的 * 只能匹配最左侧的一级子域。正是这个原因,才没有用 fqdn 做 proxy 的域名前缀。

  2. 之前用360的useso方案,不过不支持HTTPS,正准备自己做个代理的,找到了这里。已经用上,谢谢提供服务!

    1. 其实 Google Fonts 代理的流量不算大,因为国外的几个 VPS 还同时提供着学校里几百人的科学上网服务,每个月有几 T 流量。

      1. fonts.gstatic.com和fonts.googleapis.com这两个域名在北京有镜像,可以直接301回原域名,对于这两个域名的替换也可以取消掉了。

  3. nslookup fonts.lug.ustc.edu.cn 114.114.114.114
    Server: 114.114.114.114
    Address: 114.114.114.114#53

    ** server can’t find fonts.lug.ustc.edu.cn: NXDOMAIN

  4. 虽然fonts.googleapis.com已经提供了国内访问,但是速度差强人意,下载等待30秒超时的现象还是屡次出现,ajax.googleapis.com依旧不能使用。能不能这样:将你们的所有反待服务的源地址替换为360公共库,然后你们再提供https加密。这样可以减轻国际出口压力,同时加快速度,因为360有缓存

    1. 科大博客是开源项目,代码托管在这里:https://git.ustclug.org/groups/ustc-blog。不过自行搭建可能有点难。。。。

        1. LUG的Google Fonts反向代理只是一段nginx配置,并不是一个独立的程序。关键配置如下:


          server {
          listen 80;
          listen 443;
          listen [::]:80;
          listen [::]:443;

          server_name fonts.lug.ustc.edu.cn;

          proxy_cache frontCache;
          proxy_cache_valid 200 304 404 12h;
          expires 12h;
          proxy_cache_use_stale error timeout invalid_header updating
          http_500 http_502 http_503 http_504;

          location @redirect {
          rewrite ^/(.*)$ https://fonts.googleapis.com/$1 redirect;
          }

          location / {
          proxy_pass https://fonts.googleapis.com;
          proxy_set_header Host fonts.googleapis.com;
          include conf.d/google-fonts-proxy-common;
          }
          }

          1. 还有就是include conf.d/google-fonts-proxy-common;
            这个google-fonts-proxy-common;文件是神马内容呢?


          2. resolver 10.254.0.253 ipv6=off;

            # disable gzip response, otherwise subs_filter cannot parse it
            proxy_set_header Accept-Encoding "";

            subs_filter_types text/css text/xml text/javascript text/plain application/octet-stream;
            subs_filter //fonts.googleapis.com/ //fonts.lug.ustc.edu.cn/;
            subs_filter //ajax.googleapis.com/ //ajax.lug.ustc.edu.cn/;
            subs_filter //fonts.gstatic.com/ //fonts-gstatic.lug.ustc.edu.cn/;
            subs_filter //gerrit.googlesource.com/ //gerrit-googlesource.lug.ustc.edu.cn/;
            subs_filter //themes.googleusercontent.com/ //google-themes.lug.ustc.edu.cn/;

            proxy_connect_timeout 3s;
            error_page 500 502 504 @redirect;

  5. 我自己做了一个基于kangle服务端的反向代理,直接读360的,然后更替字节为自己的,然后套上SSL的CDN,速度很好,目前没有出错过。不过目测也没有人用kangle在这、

评论已关闭。