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

本文介绍了反向代理的加速原理、作用、配置步骤以及FAQ,另还阐述了遇到的502问题以及解决办法。

原理

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

反向代理 vs 正向代理

(配图来自 bytebyteto.com

反向代理有这么用:

1.保护服务器
2.负载均衡
3.缓存静态内容
4.加密和解密SSL通信

配置步骤

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问答笔记


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

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

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

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

发表回复

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

接下来看看