1.前言
最近用go语言写了个web网络验证,考虑到容易被DDoS的情况下.数据库mysql和redis单独部署到一个服务器上.业务处理部署到轻量级服务器上.不过这样问题就来了.怎么隐藏业务处理的服务器IP呢?最开始用的是CDN,效果确实可以.但是受CDN服务器的影响.延迟有点高.如果用国内的CDN还得实名备案费用也有点高.不划算.最后找到了反向代理
2.什么是反向代理
反向代理(Reverse Proxy)是一种服务器架构,它接收客户端的请求,然后将请求转发给一个或多个后端服务器,最后将后端服务器的响应返回给客户端。反向代理隐藏了后端服务器的实际信息,使得客户端只能看到反向代理的地址和响应。
以下是反向代理的主要特点和用途:
- 隐藏后端服务器: 反向代理隐藏了实际处理请求的后端服务器的信息,提高了系统的安全性,同时也允许后端服务器在不改变其配置的情况下进行更改。
- 负载均衡: 反向代理可以分发请求到多个后端服务器,从而分散负载,提高系统的性能和可扩展性。
- SSL 终结: 反向代理可以用于处理 SSL/TLS 加密和解密,将加密负担从后端服务器移到代理服务器,减轻了后端服务器的工作负担。
- 缓存: 反向代理可以缓存后端服务器的响应,从而提高响应速度并减轻后端服务器的压力。
- 安全性: 反向代理可以用于过滤和防止一些攻击,如DDoS攻击、SQL注入等。
3.配置反向代理
进入 /etc/nginx/ 目录找到 nginx.conf,找到server块.修改如下
server {
listen 8089; # 监听端口号 8089
server_name _; # 该配置对所有域名生效(通配符 _ 表示所有)
root /usr/share/nginx/html; # 该虚拟主机的根目录
location / {
proxy_pass http://127.0.0.1:8089; # 将请求代理转发到 http://127.0.0.1:8089
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 添加 X-Forwarded-For 头,标识客户端 IP
proxy_set_header Host $host; # 将原始请求的 Host 头传递给代理服务器
}
}
因为我就想简单的转发而已.所以配置很简单 监听8089端口.全部转发到127.0.0.1:8089上就可以了.
修改完毕之后 别忘了nginx -s reload
重新加载配置.注意:在重新加载配置之前,确保新的配置文件中没有语法错误,以免导致 Nginx 无法启动。你可以使用 nginx -t
命令来测试配置文件的语法正确性。
3.1.负载均衡
我没有多余的服务器.没办法测试
upstream reverseProxyServer{
#负载均衡应用服务器A: 权重为10,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
server 应用服务器A的IP:8080 weight=10 max_fails=2 fail_timeout=10s;
#负载均衡应用服务器B: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
server 应用服务器B的IP:8080 weight=5 fail_timeout=10s max_fails=2;
#负载均衡应用服务器C: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
server 应用服务器C的IP:8080 weight=5 fail_timeout=10s max_fails=2;
}
Comments NOTHING