nginx配置负载均衡一文解决

以下是使用Nginx部署Vue项目并配置负载均衡的详细步骤:


一、部署Vue项目到单个Nginx服务器

  1. 构建Vue项目

    arduino 复制代码
    npm run build

    生成静态文件在 dist 目录。

  2. 上传文件到服务器dist 目录上传至服务器,例如 /var/www/vue-app

  3. 安装Nginx

    sql 复制代码
    sudo apt update && sudo apt install nginx
  4. 配置Nginx站点

    • 创建配置文件 /etc/nginx/sites-available/vue-app

      bash 复制代码
      server {
          listen 80;
          server_name your_domain.com;  # 替换为域名或IP
      
          root /var/www/vue-app/dist;
          index index.html;
      
          location / {
              try_files $uri $uri/ /index.html;
          }
      
          # 可选:代理后端API请求
          location /api {
              proxy_pass http://backend_server;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
    • 启用配置:

      bash 复制代码
      sudo ln -s /etc/nginx/sites-available/vue-app /etc/nginx/sites-enabled/
      sudo nginx -t  # 检查配置
      sudo systemctl reload nginx

二、配置Nginx负载均衡

假设有2台后端服务器运行Vue应用(IP: 192.168.1.101 和 192.168.1.102)。

  1. 在负载均衡器上配置Upstream

    • 修改Nginx配置(如 /etc/nginx/nginx.conf 或新建文件):

      ini 复制代码
      http {
          upstream vue_servers {
              # 定义后端服务器列表和负载策略
              server 192.168.1.101:80 weight=3;  # 权重3,处理更多请求
              server 192.168.1.102:80;
              server 127.0.0.1:8000 backup;     # 备份服务器,主服务器宕机时启用
      
              # 可选策略:least_conn(最少连接)、ip_hash(会话保持)
              # least_conn;
              # ip_hash;
          }
      
          server {
              listen 80;
              server_name loadbalancer.example.com;
      
              location / {
                  proxy_pass http://vue_servers;
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              }
          }
      }
  2. 应用配置并重启Nginx

    复制代码
    sudo nginx -t
    sudo systemctl restart nginx

三、验证负载均衡

  1. 访问负载均衡器IP/域名

    arduino 复制代码
    curl http://loadbalancer.example.com

    多次请求会分发到不同后端服务器。

  2. 查看Nginx日志

    • 负载均衡器日志:/var/log/nginx/access.log
    • 后端服务器日志:检查请求是否均衡分配。

四、可选优化

  1. 健康检查

    ini 复制代码
    upstream vue_servers {
        server 192.168.1.101 max_fails=3 fail_timeout=30s;
        server 192.168.1.102 max_fails=3 fail_timeout=30s;
    }
    • max_fails: 允许失败次数
    • fail_timeout: 服务器标记为不可用的时间
  2. 启用HTTPS

    • 使用Let's Encrypt生成证书并配置SSL:

      ini 复制代码
      listen 443 ssl;
      ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
  3. 静态文件缓存

    bash 复制代码
    location / {
        try_files $uri $uri/ /index.html;
        expires 30d;  # 客户端缓存静态资源
    }

注意事项

  • 确保所有后端服务器的Vue应用版本一致。
  • 若使用会话保持(如ip_hash),确保后端服务无状态。
  • 防火墙需放行负载均衡器和后端服务器的端口(如80/443)。

通过以上步骤,您已成功部署Vue项目并配置了Nginx负载均衡,提升了应用的可用性和性能。

相关推荐
Re_Virtual7 小时前
centos 7环境下构建nginx 1.30
nginx·centos·rpmbuild
tonydf17 小时前
Nginx爆新的RCE漏洞!别担心,平滑升级即可。
后端·nginx
曹牧17 小时前
Nginx 504
运维·nginx
rockmelodies20 小时前
CentOS Stream 源码编译安装 Nginx 1.31.0(静态依赖版)
运维·chrome·nginx
成为你的宁宁1 天前
【Prometheus监控Nginx/Mysql/Redis/Docker/Rabbitmq】
mysql·nginx·prometheus
阿里-于怀1 天前
告别 Ingress Nginx:云原生 API 网关 Gateway API 使用指引
nginx·云原生·gateway
難釋懷1 天前
Nginx应用场景
运维·nginx
持梦远方1 天前
Nginx 静态资源挂载与前端部署实战笔记
linux·前端·笔记·nginx
艾莉丝努力练剑1 天前
【Linux网络】Linux 网络编程:HTTP(四)从手写服务器到生产级 Nginx 与 cpp-httplib 实战
linux·运维·服务器·网络·c++·nginx·http
Linux运维技术栈1 天前
一次暴力枚举攻击的防御实践:从 IP 封禁到 WAF,再到 Nginx+Lua 业务层防御
tcp/ip·nginx·安全·lua·云服务器