香港的 VPS 速度杠杠的,但是贵 + 带宽不足……其实我有一台 VPS 在香港,但已经被几个朋友用钱“霸占”了,如果我的博客也搬过去,无法负荷了,当然可以加内存神马的,但要加钱不合算啊,囧~ 就这样,自己的博客无法进驻自己的 VPS……
说实在的,我还是喜欢把博客放在美国的服务器,linode 嘛太贵鸟,对于单个博客来说太浪费,而且国人一窝蜂+linode太出名,好像现在很容易碰到被x的IP,好吧,被x无所谓啦,linode 换机房很容易啦,主要是 $ 的问题 - -
我用过好多个 vps 商的 vps,自己觉得比较 ok 的有 Linode.com、ramhost.us、ecvps.com、vr.org、kvmla.com、fedvps.com
linode 贵,ramhost 因为机房问题导致电信访问慢,vr 最低套餐都是 1G 以上了(我要那么大干嘛),最后我就一直把博客放在 fedvps.com 了,都 1 年多了吧,一直很稳定,期间换了 IP。
呃,扯远了,我是想说,既然香港的 VPS 无法再负荷我的博客,那么是否可以用 Nginx 的反向代理 + proxy_cache 缓存来加速呢?答案是肯定的,但同时因为技术不够无法完美解决也是纳闷的。
其实我以前折腾过这种方案,而且也上线了几天,发现 cookie 会混乱 + 会丢失,后来不得不停止了这种方式来加速。
最近不知道哪根筋不对,又开始折腾这个方式了,最终我解决了 cookie 问题,但是测试中发现:无法实现“有了新评论更新首页和当前文章的缓存”……
刚欣喜若狂又打入冷宫了……然后,只能妥协了:博客反向代理,只缓存图片、js、css等静态文件,这样也能起到加速作用。下面简单说说配置:
1. 服务器 A 为后端,正常方式配置网页服务器,如神马 lnmp 一键包/手动安装 lnmp 啊/lamp/虚拟主机也行,反正就是能正常运行/访问你的博客就行了(我的博客就在 fedvps.com 的 vps,因为服务器在美国,所以国内访问速度没香港的服务器快)
- 这里举例这服务器 A 的 IP 为 100.111.122.133
2. 服务器 B 作为前端(如我的香港 VPS),通常都是选择速度快的,不然就没意义了——哦,也不对,其实这样可以提高安全性。
这里贴一下我的反向代理 nginx 设置:
- 这里举例这服务器 B 的 IP 为 200.211.222.233
- 这里举例博客的域名为 ooxx.com
2.1 下面这些放在 nginx.conf 的 http 段里面,nginx.conf 的其他配置就不多说了(比较重要的我都用红字标识)
# 反向代理参数,具体自行搜索按需配置吧,懒得说明了 proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; # 配置临时目录、缓存路径(注意要先建立这2个目录,要在同一个硬盘分区,注意权限) proxy_temp_path /var/run/nginx_proxy_temp 1 2; proxy_cache_path /var/run/nginx_proxy_cache levels=1:2 keys_zone=OOXX:32m inactive=7d max_size=1g; # keys_zone=OOXX:32m 表示这个 zone 名称为 OOXX,分配的内存大小为 32MB # levels=1:2 表示缓存目录的第一级目录是 1 个字符,第二级目录是 2 个字符 # inactive=7d 表示这个zone中的缓存文件如果在 7 天内都没有被访问,那么文件会被cache manager 进程删除 # max_size=1G 表示这个zone的硬盘容量为 1G server{ listen 80; server_name ooxx.com www.ooxx.com; index index.php; access_log off; location / { proxy_pass http://100.111.122.133; #proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Referer http://$host; } # nginx 中的 Purge 配置 location ~ /purge(/.*) { #允许的IP allow 127.0.0.1; deny all; proxy_cache_purge OOXX "$scheme://$host$1"; } # 配置好后,可以手动清理某个缓存页面/文件,例如: # http://ooxx.com/abc.png # 改为 http://ooxx.com/purge/abc.png 就可以清理这个文件的缓存了 # 只对图片、js、css 等静态文件进行缓存 location ~* \.(png|jpg|jpeg|gif|ico|js|css)$ { #------------------------------------- proxy_cache OOXX; proxy_cache_key "$scheme://$host$request_uri"; proxy_cache_valid 200 304 7d; proxy_cache_valid 301 3d; proxy_cache_valid any 10s; #-------------------------------------- proxy_pass http://100.111.122.133; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Referer http://$host; } }
其他具体就不注释说明了,反正我也是搜来的,自己搜吧。
2.2 然后把 ooxx.com/www.ooxx.com A记录解析到服务器 B(200.211.222.233)就行了
我这样搞一下,我博客首页本来 ctrl+f5 打开速度(电信)是 4~6 秒变成 2~4 秒——速度强迫症真可怕。
哦,顺便说下吧,http://www.fedvps.com/ 其实是我一个朋友经营的 vps,用了那么久,一直很稳定,有需要 VPS 的朋友可以考虑,价格也比较适中。
其实呢,用国人经营的 VPS 有个好处,有问题都用普通话 ʅ(‾◡◝)ʃ
----
题外:
- 最近有点懒散,哦,是非常懒散,有工作也拖拖拉拉的,这神马状况
- 缺乏锻炼,努力中……(思想斗争+行动总是走不到一块去)
- 看剧集很容易入戏,忘记时间……怎么破?
- 还是看剧集:把自己也扔进里面的世界了,所以看完会失落,都是神马年龄了还这样……Orz
- 本文标题:折腾: Nginx 方便的反向代理
- 本文链接:https://zww.me/z-turn-the-reverse-proxy-nginx-easily.z-turn
- 发布时间:2013年10月27日 22:09
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
2~4秒是不是超速行驶
@W3Cshare
不会,如果主题元素少点,秒杀是很容易实现的。
过来支持下
linode还好吧,也没有想象那么贵吧,对于大神来说就跟不值一提了啊,我们用的就是linode东京机房,最低配的某宝也才130左右一个月。
@奥莱电影
对于我来说很值得一提,一个博客用每月 20 刀的 VPS 不觉得浪费么?
啊 我也要折腾这个。。。。。。
你朋友这个OpenZ年付好划算哦,不知道性能怎么样
@皇家元林
OpenVZ 我没用过,我用的是 XEN 和 KVM 的。
配置了几次。蛋疼了又没搞了
@Yusky
缓存了 cookie 等交互之类比较难搞
就在linode免费各种升级的时候,我域名直接被墙了 被迫回国..蛋疼
@mice
这……太囧了
阿帕奇的是不是也能这么弄呢
@碎碎念
后台可以有apache,反向代理当然还是需要nginx
@zwwooooo
噢噢,了解了
服务器B怎么弄 也要安装lnmp?
@麦钛蛋
只要nginx
我要域名绑定vps反向代理指向blogger
还要解决blogger图床问题
可以么
@HZS
如果能规律替换前缀就行吧,具体搜一下