通过 Nginx 反向代理加速网站的访问速度

原理

本地到源站网络不好,可以通过网络好的机器来反向代理源站,通过本地访问反代机,反代机访问源站来获取信息反馈给本地,反代机起到中转加速的作用,所以反代机到本地和源站的网络都要好。

反向代理 vs 正向代理

(配图来自 bytebyteto.com

反向代理服务器的目的是什么?

1.保护服务器
因为隐藏了源站ip地址,攻击者对使用反向代理的网站进行DDoS攻击会比较困难。DDoS攻击是通过破坏主机服务与互联网的连接,从而使用户无法访问该网站。当使用反向代理时,黑客将只能攻击代理服务器,这增加了安全性。


2.负载均衡
3.缓存静态内容
4.加密和解密SSL通信

如果网站使用反向代理,则其服务器的地址将被隐藏,黑客只能访问代理IP地址。这对黑客和恶意实体起到了一定的防护。

例如:对使用反向代理的网站进行分布式拒绝服务(DDoS)攻击要困难得多。DDoS攻击是通过破坏主机服务与互联网的连接,从而使用户无法访问该网站。

当网站使用反向代理时,黑客将只能攻击这些代理,这将作为附加的安全层。

配置步骤

1.将源站网站搭建好

这里就无须多做解释了。

2.新建静态网站

反代机安装面板,新建站点,域名填写网站域名,如无其他需求,则只需安装 Nginx ,无需安装数据库、PHP等,简单来说,就是新建一个静态网站即可。

3.设置反向代理

反代机站点设置完毕后,在站点设置里选择反向代理,目标URL为源站的网址,按照图片格式填写(注:有时直接复制的网站链接最后面会有个/,需要删除掉),缓存看需求,有时源站设置了缓存,这里如果再开启缓存的话会导致网站打不开,或者如缓存后出现wordpress后台重复登陆等问题,需要编辑配置文件取消后台缓存。
*源站一般都开了https,因此”后端代理地址”也需要选择https
*反向代理完成以后,无论是用源站https证书或再申请一个https证书,都可以的。

4.修改 Hosts 文件

路径:/etc
修改反代机服务器hosts文件,将中转机指向源站,格式:源站ip 域名。然后域名解析到反代机ip,即可访问。

5.重启 Nginx

Nginx 反向代理出现502 Bad Gateway SSL问题

你是否遇到过使用 Nginx 反代网站时出现 502 Bad Gateway , 明明正常反代都没问题 , 可是反代就 502 Bad Gateway , 查看错误日志显示 : 

*8 SSL_do_handshake() failed (SSL: error:140194438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: ip 地址, server: xxx.com, request: “GET / HTTP/2.0”, upstream: “https://vpsip:443/”, host: “xxx.com

初步研究问题发现是由于网站启用了 SNI ,Nginx反代默认没有加入 SNI   proxy_ssl_server_name on; ,Nginx 无法成功 handshake 上游的 SSL , 导致 502 Bad Gateway. 

解决办法

1.打开配置文件

2.加入代码

在 proxy_set_header REMOTE-HOST $remote_addr;  下一行加入

proxy_ssl_server_name on;  

保存,重启Nginx 即可

Q&A


Q1:网站本身是放在英国的,国内访问极慢, 300-400ms 延迟还掉包。。现在呢想加速国内访问,由于公司原因源服务器不能动,于是开了台香港 vps ,我在香港这台 vps 上用 nginx 搭了反向代理,用 route53 的 DNS 把所有国内的的访问都转到香港的 IP 上来。 

于是现在问题来了, ping 的时候是不怎么掉包了,但感觉网站还是慢啊。。网站本身是个 WordPress ,未登录下访问还是挺快的,因为用了缓存插件静态化了,但登陆后台后还是很慢,每次切换页面都要等 1-2 秒(排除机器性能问题,英国的同事就说后台秒开非常快)。。 

我在想是不是我的搭建方法不对?感觉 nginx 的代理值是加速了静态的文件,而动态的文件好像还是直接请求的源服务器,我这样理解对吗?求高人指点!

A: 访问后台必然很慢,这个无解(除非🍅)。
client->proxy->server 你访问后台还是这个流程,你通过一层代理访问后台不但可能比较慢而且经常 502 ,首先香港到英国也是慢的, 你这个除了把主站搬近一点无解. 除非你的站是纯 html。

Q2:反向代理就 100% 安全吗?

不是的,经验老道的黑客总会找到绕过安全机制的方法。

发表回复

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

这些同样精彩