查看详情

Nginx 升级 HTTP / 2 指引

引言 HTTP/2 目前已经逐渐推广开来,很多站点都开始迁移至 HTTP/2 ,比如 https://v.qq.com/ 或者 https://www.google.com.hk/ 都启用了 HTTP/2; 我们可以先看下浏览器的支持情况: HTTP/2 相对 HTTP1 带来了诸多特性; 多路复用 (Multiplexing) 头部压缩 服务端推送 HTTP/2 采用二进制格式而非文本格式 这些好处无疑对提升 Web 性能有很大的帮助,不过还是建议详细阅读 HTTP/2:新的机遇与挑战 了解这背后究竟发生了什么;本文不详细讨论 HTTP/2 的具体特性和实现,更多提供升级实践。 升级 Nginx 机器环境,亚马逊的 EC2 和 ubuntu 系统; 确保你的 详情 »

解决 Nginx 413 Request Entity Too Large

最近做 Node 上传服务,NGINX 代理,因此本地测试没问题,但是发到线上 代理抛出异常; 其实这个也很简单,重新配置下 Nginx 的上传限制: server { ... listen 80; server_name localhost; client_max_body_size 20M; ... } 详情 »

解决 no "ssl_certificate" is defined nginx 配置问题

近期开始陆续把 https 证书往 EC2 上开始部署;由于 Chrome 67 版本对 https 的要求更高了,加上近期会实验 http2,所以不得不开始把 HTTPS 启用了;之前写过为什么没有启用 SSL 的原因,很大程度上是因为 vanthink.cn 的七牛图床没有开启 HTTPS 导致这边的前端静态资源一直没能够使用到 https ,但是随着近期图床的迁移,应该会在两三周内完成域名的全部迁移; 证书用的是 腾讯云 的免费的证书。按照官方教程来的,但是结果还是出错了。始终访问不到。如果你启动的时候 nginx 没有抛出错误的话,你可以优先去看 AWS 控制台的安全组: 一定要开启对应的端口; 第二个排查就是,你需要去看 nginx 的错误日志; 一般在 /usr/log/nginx/error.log 报了什么错误; 这个问题其实还是比较好解决的, 详见这里 server { listen 详情 »

查看详情

引入 Brotli 进行 Web Server的压缩

目前我们大多数网站都是启用的 gzip 来进行 资源传输的压缩,这有利于我们更加快速的访问我们的网站;但是除了 gzip 外,我们或许还有别的选项,而且性能会更好,比如 Facebook 便是启用的 Brotli 算法; Brotli Brotli 最初发布于2015年,用于网络字体的离线压缩。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。新版本还展现了跨平台的性能改进,以及减少解码所需的内存。 与常见的通用压缩算法不同,Brotli使用一个预定义的120千字节字典。该字典包含超过13000个常用单词、短语和其他子字符串,这些来自一个文本和HTML文档的大型语料库。预定义的算法可以提升较小文件的压缩密度。 对全球1000个访问量比较大的地址进行测试,使用 Brotli 算法可以得到明显的性能改善: 14% smaller than gzip for JavaScript 21% smaller than gzip for HTML 17% smaller than gzip for CSS 使用brotli取代deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。 当然如同 HTTP2, 详情 »

使用Vagrant Box + Nginx 不更新静态资源解决方案

第一次使用Vagrant Box ,或多或少会遇到这么一个问题,就是切下来的代码,可以运行,改接口也可以,但是静态资源(比如css,js)始终却改动不生效,有的会出现一系列红点(用chrome查看的话),其实这种问题只需要一个配置选项就OK了。 # If you use nginx as your main web server # add this directive in your nginx.conf sendfile off # If you use apache as your main web server # add this directive in your httpd.conf (or apache.conf) EnableSendfile off 参考:http://www.falexandrou. 详情 »

使用 Supervisor 保持node服务一直启用(Thinkjs 案例)

很多node程序在退出console后会自动关掉进程,解决方法有很多,诸如 pm2,当然今天主要说下Supervisor。 安装 Debian/Ubuntu: apt-get install supervisor Fedora: yum install supervisor Most other distributions: easy_install supervisor 配置 你可以编辑 /etc/supervisor/supervisor.conf 或者在/etc/supervisor/conf.d 目录下添加thinkjs.conf配置。类似于nginx 的配置。 配置(thinkjs)参考: [program:thinkjs] command = node /usr/www/thinkjs/index.js // start file directory = /usr/www/thinkjs user = root 详情 »