阿里云主机跨地域跨节点反向代理实战——使用杭州节点的阿里云ECS代理青岛节点的阿里云ECS

Posted by

最近虽然博客写的少了,但是事情没少做。学习方面,主要在学习phalcon以及设计模式。我师父一年多前让我造个轮子写个博客,现在正打算用phalcon重新写个博客系统,替代现在使用的wordpress。我真的是受够了wordpress,它真的是又老又臃肿。代码方面,重新架构并调试了一遍我自己用shell写的脚本jickershell,用这个新的脚本重新安装和部署了杭州节点的阿里云服务器。另外,我还干了一件不大不小但是自我感觉很二逼的事情。感觉我自己挺奇怪的,越是自我感觉很二逼的事情,我就越兴奋。这件事情就是,我用自己即将到期的阿里云杭州节点ECS代理了自己青岛节点的阿里云ECS。跨地域跨节点反向代理,是不是很蛋疼。

故事背景

那是公元2012年9月18日,那天上海的防空警报特别的响,文武双全把自己的个人网站搬家到阿里云了。一晃4年多过去了,文武双全个人网站的阿里云主机2017年就快到期了。这台ECS最初跑的是Centos,因为我师傅的关系我早已倒向了Debian阵营。好几年了,我一直想把这台服务器重置下系统,换乘我心仪已久的Debian。另外,我也想尝试下阿里云主机的跨节点反向代理,看看到底有多慢。

tengine有点不靠谱啊

大神章亦春开发的OpenResty感觉比tengine更靠谱
大神章亦春开发的OpenResty感觉比tengine更靠谱

以前听我师傅的,服务器上全部换tengine了。可是,tengine感觉没什么人维护了。都快一年了,还没出新版本。阿里的开源软件,真心的不能跟?看着nginx各种版本更新,文武双全是眼馋啊。后来又知道了openresty以及大神章亦春,我有点想弃坑了。好像tengine早期的版本,就是大神章亦春做的。个人的计划是以后生产服务器上nginx的stable版本,代理服务器可以考虑上openresty抗压。tengine以及阿里的其他开源软件,我是不想再沾了。

阿里云跨地域跨节点反向代理实战

以前公司的反向代理服务器,都是找专业运维搞的。这是文武双全第一次自己配置反向代理服务器,而且一上来就搞跨地域跨节点的反向代理,确实有点小激动啊。

第一步:重置杭州节点阿里云服务器的操作系统,并且安装tengine

一开始上来,上来先将反向代理服务器的操作系统重置为Debian8,用文武双全自己写的脚本jickershell全程自动化安装tengine。中间脚本出了几次bug,也都修复了。而且按照新的架构模式,进行了重构。

第二步:配置杭州节点反向代理服务器的tengine

在这里,我就直接贴nginx.conf配置文件的代码了。

proxy_connect_timeout 300s;     #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 300s;     #连接成功后后端服务器响应时间(代理接收超时)
proxy_send_timeout 300s;
proxy_buffer_size 64k;      #设置代理服务器nginx保存用户头信息的缓冲区大小
proxy_buffers 4 32k;      #proxy_buffers缓冲区网页平均在32k以下的话这样设置
proxy_busy_buffers_size 64k;     #高负荷下缓冲大小proxy_buffers*2
proxy_temp_file_write_size 64k;     #设定缓存文件夹大小大于这个值将从upstream服务器传递请求而不缓冲到磁盘
proxy_ignore_client_abort on;       #不允许代理端主动关闭连接

这一段 基本上是从谷歌搜出来的,哈哈。

第三步:配置杭州节点反向代理服务器的tengine站点文件

反向代理服务器的任务,主要是把接收到的访问指令,转发给下游的tengine服务器。这个地方坑了我好久,尝试了搞了半天,才最终确定杭州节点的nginx站点文件。

listen 80;
server_name www.jicker.cn jicker.cn;
access_log  logs/jicker_access.log main;
error_log   logs/jicker_error.log error;
location / {
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_pass http://111.111.1111.111:88;   #这里应该填写下游的IP地址和端口号
}
location ~ /\.ht{
deny all;
}

重点是location / {}这里的代码,没有其他任何多余的东西。只是设置proxy的一些参数,传递给下游。比如说将本机获取到的$host设置为环境变量HOST,设置代理的路径为 阿里云青岛节点的真实IP和端口号等。

第四步:配置青岛节点服务器的tengine站点文件

文武双全青岛节点的web服务器也是tengine,所以这里的反代行动实际上就是用杭州的tengine反向代理了青岛的tengine,好蛋疼。。。以下是青岛节点服务器的tengine站点文件。

listen 80;
server_name www.jicker.cn;
index index.htm  index.html  index.php;
root  /web/wwwjickercn;
error_page   404   /404.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$
{
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_pass  127.0.0.1:9000;
include       fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires      30d;
}
location ~ .*\.(js|css)?$
{
expires      12h;
}

这就是一个稍微正常点的wordpress的nginx的配置文件了,跟平常的nginx站点配置文件,没啥大的区别。主要的配置还是在杭州节点的反向代理服务器上。

被火狐浏览器的缓存给坑了

文武双全在调试配置的时候,一下午不停的在火狐浏览器下出现同一个报错的界面。以至于我调试好配置以后,一直找不到原因。后来换成谷歌看了一下,网站又是好的。妈蛋,赶紧清空火狐的缓存,终于显示正确的页面了,不在显示报错的页面。难道这是由于反向代理和浏览器,都有缓存的原因吗?

文武双全对跨地域跨节点反向代理的总结

文武双全个人网站这小比比的网站,也玩跨地域跨节点反向代理,想起来就觉得搞笑。不过生命在于折腾,越折腾越欢乐。wordpress本来已经够慢了,这一下跨节点反向代理速度就更慢了。我的哥啊,这不生成静态文件,简直没办法忍受啊,搞的我又怀念起wp-super-cache了。不过,下次是下定决心重新用phalcon写个blog系统来替换老旧臃肿的wordpress,也就没有继续折腾缓存的必要了。Goodbye,阿里云。Goodbye,Wordpress!

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据