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

相关推荐
Jinkxs9 小时前
LoadBalancer- 主流负载均衡工具盘点:Nginx / Haproxy / Keepalived 基础介绍
运维·nginx·负载均衡
ReaF_star11 小时前
【安全】SSL证书更新操作手册(Nginx+Cloudflare+acme.sh)
nginx·安全·ssl
云动课堂13 小时前
【运维实战】Nginx 高性能Web服务 · 一键自动化部署方案 (适配银河麒麟 V10 / openEuler / CentOS 7/8)
运维·前端·nginx
2601_9498179220 小时前
nginx 代理 redis
运维·redis·nginx
java1234_小锋20 小时前
解释一下NGINX的反向代理和正向代理的区别?
运维·nginx
techdashen2 天前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
人生匆匆2 天前
通过nginx解决跨域问题
运维·nginx
子木HAPPY阳VIP2 天前
信创UOS,Docker 完整操作部署(Dockerfile部署方式)&排错整合
linux·运维·redis·nginx·docker·容器·tomcat
吹个口哨写代码2 天前
小程序图片不显示,直接访问显示,头部配置问题
javascript·css·nginx
m0_631653312 天前
阿里云单机双网终极部署与运维白皮书:Nginx + PM2 + Prisma 踩坑实战
运维·nginx·阿里云·部署