Ghost这个程序目前还不能直接访问静态路径文件,尝试了一下修改源代码,但是node不大会始终搞不定FileSystem。所以在node的前面放了个Nginx反代做一下Rewrite。
都说node和Nginx性能好,顺手做一下压测看看, 200个并发就有些慢了,1000直接卡死。也许是缓存没配置好吧。
找到了Nginx缓存的方法:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=webserver:20m max_size=1g;
proxy_cache webserver;
proxy_cache_valid 200 10m;
可是不清楚是否成功了,因为从Chrome里看到的页头信息Cache全是MISS的。
找到原因了,需要两个重要的属性
proxy_hide_header Set-Cookie;
proxy_ignore_headers Set-Cookie;
作缓存就要考虑cookie,proxy_hide_header Set-Cookie;
的作用是把大家看起来都一样的缓存页的Cookie隐藏掉。要不然用户打开之前管理员浏览首页而生成的缓存,会把cookie写入自己的浏览器里,这样用户直接可以登录后台了。
而Nginx考虑到这一点,默认会自动把上游页面带Cookie的不缓存,所以就需要proxy_ignore_headers Set-Cookie;
来取消掉这个特性。
最后,把后台地址的转发规则加到根目录之前,并且break掉
location /ghost/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://yourhost;
proxy_http_version 1.1;
break;
}