折腾: Nginx 方便的反向代理

» 2013-10-27 折腾 56条评论

香港的 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

zww
or
oooo

“折腾: Nginx 方便的反向代理”有56条评论

  1. 郑永 says:

    先沙发一下。

  2. 郑永 says:

    还是空间问题,很多博客的问题。

  3. 郑永 says:

    还好空间稳定下来了,不用折腾,呵呵 :) 3发。

    1. zwwooooo says:

      @郑永
      竟然三连发……有一个被 axiu 带坏了

  4. 老谢 says:

    nginx的反代还是很容易配置的,前端如果速度好,缓存静态一来可以提升速度二来可以保护后端

    1. zwwooooo says:

      @老谢
      全部缓存的话就难配置了,那个cookie问题很烦

  5. 接上去

  6. 再来个...响应号召

  7. 默默的放在128M的廉价VPS上。。。表示目前满足了 :lol:

    1. zwwooooo says:

      @小周博客
      够用满足就好

  8. 很是羡慕香港vps,缺银两啊

    1. zwwooooo says:

      @平板盒子
      如果可以国内的话何必这么折腾 - -

    2. zwwooooo says:

      @空空裤兜
      我也是……大部分都要每月150了,囧

  9. 大发 says:

    我也打算入住香港了,美国线路现在有点坑

  10. 大发 says:

    我还是来双响炮吧,不三联发了

  11. 逆袭者 says:

    我觉得香港的基本可以了 不用追求这么高吧

    1. zwwooooo says:

      @逆袭者
      呃,我文中不是写了无法进驻嘛……

  12. jalena says:

    还是在用KVMLA的,一年多了,感觉还不错!

    1. zwwooooo says:

      @jalena
      的确很不错

  13. 郑永 says:

    楼上头像难道是奥巴马?

    1. zwwooooo says:

      @郑永
      一看就是啦,哈哈哈

  14. 还玩的这么高级

  15. Alex Gao says:

    不明觉利

    1. zwwooooo says:

      @Alex Gao
      不玩不明啊

  16. axiu says:

    好厉害的样子!

    1. zwwooooo says:

      @axiu
      没事折腾折腾

  17. jack says:

    阿里云一年才500多元,足够你博客开销了

    1. zwwooooo says:

      @jack
      问题是这里讨论的是不备案的情况下。

  18. tiandi says:

    可怕得2S强迫症。。。

    1. zwwooooo says:

      @tiandi
      的确可怕,我还想1S内呢……

  19. yxiao says:

    现在速度很快!
    前几天首页出问题了.

    1. zwwooooo says:

      @yxiao
      前几天应该是在调试,偶尔会碰到首页缓存错误

  20. yxiao says:

    你也用的wp-useragent.没识别出我的win8.1哦. :mrgreen:

    1. zwwooooo says:

      @yxiao
      插件还没更新吧

回复给 碎碎念 ¬
取消回复

昵称 *

网址

B em del U Link Code Quote