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负载均衡,提升了应用的可用性和性能。

相关推荐
伊成10 小时前
Docker 部署 Nginx 完整指南
nginx·docker·容器
小白的代码日记19 小时前
Nginx学习与安装
运维·nginx
ayaya_mana1 天前
Nginx性能优化与安全配置:打造高性能Web服务器
运维·nginx·安全·性能优化
油丶酸萝卜别吃1 天前
nginx配置代理服务器
运维·网络·nginx
花酒锄作田1 天前
Nginx反向代理Kafka集群
nginx·kafka
奥格列的魔法拖鞋~1 天前
Docker-LNMP架构 创建多项目- 单个ngixn代理多个PHP容器服务
nginx·docker·eureka·架构·php·lnmp
皓空揽月1 天前
php+apache+nginx 更换域名
nginx·php·apache
会说法语的猪2 天前
使用nginx反向代理kkfile
运维·nginx
夜影风2 天前
Nginx反向代理与缓存实现
运维·nginx·缓存
forestsea2 天前
Nginx蜘蛛请求智能分流:精准识别爬虫并转发SEO渲染服务
运维·爬虫·nginx