Nginx配置反向代理

最后更新于 2024-09-18 274 次阅读


1.前言

最近用go语言写了个web网络验证,考虑到容易被DDoS的情况下.数据库mysql和redis单独部署到一个服务器上.业务处理部署到轻量级服务器上.不过这样问题就来了.怎么隐藏业务处理的服务器IP呢?最开始用的是CDN,效果确实可以.但是受CDN服务器的影响.延迟有点高.如果用国内的CDN还得实名备案费用也有点高.不划算.最后找到了反向代理

2.什么是反向代理

反向代理(Reverse Proxy)是一种服务器架构,它接收客户端的请求,然后将请求转发给一个或多个后端服务器,最后将后端服务器的响应返回给客户端。反向代理隐藏了后端服务器的实际信息,使得客户端只能看到反向代理的地址和响应。

以下是反向代理的主要特点和用途:

  1. 隐藏后端服务器: 反向代理隐藏了实际处理请求的后端服务器的信息,提高了系统的安全性,同时也允许后端服务器在不改变其配置的情况下进行更改。
  2. 负载均衡: 反向代理可以分发请求到多个后端服务器,从而分散负载,提高系统的性能和可扩展性。
  3. SSL 终结: 反向代理可以用于处理 SSL/TLS 加密和解密,将加密负担从后端服务器移到代理服务器,减轻了后端服务器的工作负担。
  4. 缓存: 反向代理可以缓存后端服务器的响应,从而提高响应速度并减轻后端服务器的压力。
  5. 安全性: 反向代理可以用于过滤和防止一些攻击,如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;
}

4.参考文章

https://bbs.huaweicloud.com/blogs/301714