【云计算的1024种玩法】海外数据中心+反向代理加速企业官网的海外访问体验

前言

随着跨境贸易的发展以及一带一路倡议的铺开,愈来愈多的中国企业须要走出去,去开拓海外用户。因为线下的生产厂家在国内,因此海外用户能看到的门面也就一个企业官网网站了,可是不少官网的服务器多是位于国内的,在海外打开就会像咱们打开一个海外网站同样,速度慢到绝望啊!php

借着虽然不是一带一路成员国但却毗邻大量一带一路沿线国家的印度-孟买地域开通之际,咱们就来试试如何实现企业官网的海外加速吧。html

介绍

这里介绍的海外加速就是开通一个临近海外消费者的服务器,而后选择同步数据或者进行镜像缓存,同步数据和附件的话其实费用仍是蛮高昂的,通常来讲选择镜像缓存也就是反向代理就能够。nginx

若是针对的是海外的华人消费者,那么中文网站直接反代就行,若是是歪果仁的花,能够考虑在新加坡地域创建一个英文版源站(毕竟英文再全球仍是蛮通行的),而后在南美洲、欧洲、中东等地域创建服务器进行反代就行。git

要求 & 收获

须要使用到的产品: 阿里云ECS 海外地域github

经过本文你将讲学到: Nginx、OpenResty 的反向代理、全静态缓存、缓存清理、内容替换、CC防护解决方案数据库

教程

若是按标准的来建一个海外站点,那就得搭建一个如出一辙的环境,而后实时同步数据库和附件,不过这样作成本过高了。通常的话,咱们能够考虑使用反向代理,将网站的内容作一个镜像到海外服务器。这个作法也应用于不少的地方门户,好比能够将客户提供的一个广告专题经过反代到网站目录中,看起来就像是网站本身作的专题,搜索引擎也会优先收录这个专题页面。后端

为了保障这个反代教程的可用性,咱们还须要额外的几个模块,若是参考上述教程已经安装过 OpenResty 的朋友,能够编译升级 OpenResty 来增长模块。参考:【云计算的1024种玩法】手把手教你如何编译升级 OpenResty缓存

没有安装 Nginx 能够参考:《【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty》 直接按下面的增长模块进去就行:服务器

地域选择

关于地域的选择,阿里云的16个节点最适合服务哪些地域还能够参考个人专题:阿里云全球十六个节点评测分析dom

参与聚能聊: 由新开的第16个数据中心,来评价阿里云的全球化部署,一块儿讨论阿里云的全球战略赢得丰厚奖品!

添加模块

须要添加的是:(若是不参考后面的进阶教程,其实能够跳过添加模块)

ngx_cache_purge - 缓存刷新扩展,值得一提的是如今由 nginx-modules 继续维护的新版本,原做者FRiCKLE 从14年提供 2.3 版本后就再也不进行更新,国内不少教程都是用的 FRiCKLE 旧版。

replace-filter-nginx-module - Nginx替换过滤文本模块,OpenResty 提供的模块,不过因为尚处于 RC 阶段因此没有归入 OpenResty 主线。

1、添加版本变量

NgxCachePurgeVersion='2.4.2';

2、下载源码

cd /root/src
wget https://github.com/nginx-modules/ngx_cache_purge/archive/$NgxCachePurgeVersion.tar.gz
tar xzf $NgxCachePurgeVersion.tar.gz
git clone https://github.com/openresty/replace-filter-nginx-module.git

3、编译依赖

git clone https://github.com/openresty/sregex.git
cd sregex
make && makeinstall

4、编译 OpenResty

参考全新安装教程或者编译升级教程,在 ./configure 参数中中的 --add-module=../ngx_pagespeed-$PageSpeedVersion-beta \ 后添加:

--add-module=../ngx_cache_purge-$NgxCachePurgeVersion \
--add-module=../replace-filter-nginx-module \

升级的花稍微麻烦点,须要杀进程而后安装替换二进制文件

设置教程

1、建立缓存目录,用以加速静态资源的访问

mkdir /data/cache/path -p
mkdir /data/cache/temp
chmod -R www-data /data/cache

2、修改 /usr/local/openresty/nginx/conf/nginx.conf 文件,在 http{} 最后加入:

proxy_temp_path   /data/cache/path;
proxy_cache_path  /data/cache/temp levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=10g;
# 500m为最大内存占用,10g为最大磁盘占用,7d是7天无访问删除

3、建立虚拟主机配置文件,以下:

yourdomian.conf 是虚拟主机配置文件名称,改成域名就行,例如:www.mf8.biz.conf
server_name yourdomian;  中的 yourdomian 改成和反向代理的原网站同样的域名就行,例如原网站是 https://www.mf8.bi 那就是 www.mf8.biz
root /data/wwwroot/yourdir; 中的 yourdir 也改为网站域名就行,都是能够自定义的

重要:

proxy_pass http://反代域名;  将 http://反代域名 换成本身须要反代的域名便可

若是须要考虑 HTTPS,请参考:《【云计算的1024种玩法】10分钟轻松设置出 A+ 评分的 HTTP/2 网站》

cat >> /usr/local/openresty/nginx/conf/vhost/yourdomian.conf << EOF  
  server {
  ##运行端口
  listen 80; 

  ##这里须要改为你的域名
  server_name yourdomian; 
  index index.html index.htm index.php; #首页文件优先级

  access_log /data/wwwlogs/access_nginx.log combined; #日志目录

location / {
proxy_cache_key "$scheme://$host$request_uri";
#缓存key规则,用于自动清除缓存。
proxy_cache cache_one;
#缓存区名称,与前面定义的相同

proxy_cache_valid  200 304 4h;
#正常状态缓存 4 小时
proxy_cache_valid 301 3d;
# 301状态缓存3天
proxy_cache_valid any 10s;
#其余状态缓存(如502 404)10秒

proxy_pass http://反代域名;    
#指定后端ip或者网址,能够加端口

proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
#向后端传递访客真实ip
proxy_set_header   Referer http://example.com;    
#强制定义Referer,程序验证判断会用到,修改成反代域名
proxy_set_header   Host $host;
#定义主机头


#proxy_cache_use_stale invalid_header error timeout http_502;
#当后端出现错误、超时、502状态时启用过时缓存,谨慎用。
      }

EOF

经过这一个方法能够制做出一个彻底静态的网站来,从而避免了动态请求,若是网站忽然遭遇 CC 攻击能够考虑经过这个方式来应对,攻击者就没法请求动态内容了。

进阶教程

刷新缓存

以前咱们设置的是全静态的缓存,若是被反代的网站修改了内容并不会在这个反代的网站是显示的,由于有缓存。那么咱们就要刷新缓存,在虚拟主机配置文件中添加这一段:

location ~ /purge(/.*)
{
allow            127.0.0.1; #容许访问刷新缓存的 IP
proxy_cache_purge    cache_one   $host$1$is_args$args;
}

这样访问 https://www.mf8.biz/logo.png,OpenResty 就会去请求 https://www.mf8.biz/logo.png,保存存在就输出。
若是源站的 logo.png 咱们进行了更新,则须要刷新缓存,访问海外的 https://www.mf8.biz/logo.png,就会提示 Successful purge,若是这个文件没有被缓存过,则提示404 Not Found

内容替换

不少教程用的是 ngx_http_substitutions_filter_module 不过 replace-filter-nginx-module 更好用,并且和 OpenResty 更配,等稳定了就会融入主线都不须要从新添加这个模块了。

在虚拟主机配置文件的反代 location{} 中添加:

replace_filter 米饭粑 云栖社区 ig;

意思是将 米饭粑 全文替换为 云栖社区,后面的 i 表示 不区分大小写g 表示 全文搜索并替换

更多用法:https://github.com/openresty/replace-filter-nginx-module#replace_filter

这样咱们就打造好了一个功能完备的 OpenResty 反向代理了。

阅读原文http://click.aliyun.com/m/41010/

相关文章
相关标签/搜索