反向代理,这个词相信搞网络的朋友都很熟悉的,但是具体是什么意思呢?说实话,复杂的我也不懂,就我个人理解而言,反向代理有很多用途,比如说保护真实服务器不被外界攻击,加速网络等等。今天我们要介绍的就是加速网络的一种。
首先介绍一下场景:
我有一个网站,部署在法国的服务器上,域名是www.2.com,国内用户直接访问这个网站的时候,网络速度非常的慢,因为大家都知道,中国到法国的网络是经过了很遥远的距离传输。国内的服务器虽然速度很快,但是费用却很贵,那么有什么办法可以加速国内用户访问我法国的网站呢?今天我就给大家介绍一种反向代理加速的方法。
首先我们要找一台访问法国服务器速度比较快的服务器,折中一点我们可以找香港的服务器,配置不需要太高,为什么挑香港呢?因为香港是我们中国作为对外的一个转接口,大陆到香港的网络速度不会慢,而香港到法国的速度又不会太慢,所以我们选择香港来中转。
实现方法:在香港服务器上部署反向代理服务,然后将域名解析到香港服务器,当用户访问我网站的时候,实际是访问了香港的服务器,然后由香港服务器将用户的请求转发到法国服务器,法国服务器处理完成后,再将结果返回给香港服务器,香港服务器接收后再返回到用户浏览器,这样一来,用户并没有直接访问速度慢的法国服务器,而是经过了香港服务器的中转,因此访问的速度有所提高。
整个流程如下图所示:
那么如何实现这样的反向代理服务呢?我们选择的是Nginx,这款大名顶顶的工具,它出生的目的就是为了实现反向代理服务。下面是一个简单的反向代理服务配置:
upstream remote #这里的remote是可以随便取的名称 { keepalive 30; #这里指定保持连接,时间为30秒 server www.2.com; #这个www.2.com是目标网站的IP } server { listen 80; #这个是中转机绑定的端口 server_name www.1.com; #这里是中转机绑定的域名 proxy_buffering off; #这两行是指关闭传输缓冲区,降低内存占用,提高响应速度 proxy_request_buffering off; location / { proxy_set_header X-Real-IP $remote_addr; #将用户的真实IP传递给目标服务器 proxy_set_header Host www.2.com; #设置Host为www.2.com,因为目标服务器的网站绑定了域名www.2.com proxy_set_header Connection Keep-Alive; #设置保持长连接,时间为上面upstream里的keepalive的30秒 proxy_pass http://remote; #这里的remote对应upstream设置的名称 sub_filter "2.com" "1.com"; #这里表示将目标网站的字符串“2.com”全部替换成“1.com” sub_filter "哈哈" "你好"; #这里表示将目标网站的字符串“哈哈”全部替换成“你好” sub_filter_once off; #这里表示上面的替换是替换全部匹配成功的内容,而不是只替换一次 } }