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/b7f54b2df7773722d382f4809d65029**c**

  • 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,写一个说明文件放进去吧。

参考链接

  1. Nginx 配置 Google fonts 反向代理开启 HTTP2/SSL 支持
  2. Nginx Proxy Cache原理和最佳实践
  3. Module ngx_http_proxy_module