AWS的Cloudfront没有采用GZIP的问题

问题的现象:
例如源站source.ciika.com,加速域名为ciika.com,web服务器为nginx,在直接访问源站的时候,是有gzip的,但是通过CDN之后就没有压缩了,直接原样输出了,所以问题应该出现了cloundfront回源的问题。

问题的原因:
由于cloundfront采用的是http1.0去回源,而http1.0没有携带 Accept-Encoding,这个是在http1.1才有的,所以nginx认为用户无法解压,所以直接把未压缩的内容传输给cdn,然后cdn在原样传输给用户。

解决方案:
修改nginx的配置

gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_types text/css application/x-javascript;
gzip_vary on;

gzip_proxied any,表示无条件的输出gzip内容给用户

参考:
http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_proxied
https://pelanne.com/blog/enabling-gzip-compression-your-nginx-served-cloudfront-content/

标签: none

添加新评论