Blog

折腾: Nginx 方便的反向代理

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

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: https://zww.me/z-turn-the-reverse-proxy-nginx-easily.z-turn

56 comments

  1. 郑永 郑永 Google Chrome 30 Google Chrome 30 Windows XP Windows XP

    先沙发一下。

    沙发
  2. 郑永 郑永 Google Chrome 30 Google Chrome 30 Windows XP Windows XP

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

    板凳
  3. 郑永 郑永 Google Chrome 30 Google Chrome 30 Windows XP Windows XP

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

    地板
  4. ......
  5. W3Cshare W3Cshare Google Chrome 28 Google Chrome 28 Windows XP Windows XP

    2~4秒是不是超速行驶 :mrgreen:

    21楼
  6. kn007 kn007 Google Chrome 30 Google Chrome 30 Windows XP Windows XP

    过来支持下

    22楼
  7. 奥莱电影 奥莱电影 Google Chrome 27 Google Chrome 27 Windows 8 Windows 8

    linode还好吧,也没有想象那么贵吧,对于大神来说就跟不值一提了啊,我们用的就是linode东京机房,最低配的某宝也才130左右一个月。

    23楼
    • zwwooooo zwwooooo Firefox 25 Firefox 25 Windows 8.1 Windows 8.1

      @奥莱电影
      对于我来说很值得一提,一个博客用每月 20 刀的 VPS 不觉得浪费么?

  8. countmeon countmeon Google Chrome 21 Google Chrome 21 Windows 7 Windows 7

    啊 我也要折腾这个。。。。。。

    24楼
  9. 皇家元林 皇家元林 Firefox 25 Firefox 25 Windows 8.1 Windows 8.1

    你朋友这个OpenZ年付好划算哦,不知道性能怎么样

    25楼
  10. Yusky Yusky Google Chrome 29 Google Chrome 29 Windows 7 Windows 7

    配置了几次。蛋疼了又没搞了

    26楼
  11. mice mice Sogou Explorer Sogou Explorer Windows 7 Windows 7

    就在linode免费各种升级的时候,我域名直接被墙了 被迫回国..蛋疼

    27楼
  12. 碎碎念 碎碎念 Google Chrome 26 Google Chrome 26 Windows 7 Windows 7

    阿帕奇的是不是也能这么弄呢

    28楼
  13. 麦钛蛋 麦钛蛋 Google Chrome 32 Google Chrome 32 Windows 7 Windows 7

    服务器B怎么弄 也要安装lnmp?

    29楼
  14. HZS HZS Google Chrome 43 Google Chrome 43 Windows 7 Windows 7

    我要域名绑定vps反向代理指向blogger
    还要解决blogger图床问题
    可以么

    30楼
    • zwwooooo zwwooooo Firefox 38 Firefox 38 Windows 8.1 Windows 8.1

      @HZS
      如果能规律替换前缀就行吧,具体搜一下

Leave a Reply