阿里云服务器部署 五 Nginx + springboot

Nginx的部分配置

1. 基础容灾配置(被动健康检查)

upstream 块中,通过 max_failsfail_timeout 参数定义故障转移规则:

upstream 块中,通过 max_failsfail_timeout 参数定义故障转移规则:

nginx

复制

复制代码
upstream backend {
    # 定义后端服务器,设置失败阈值和超时
    server 172.16.108.42:80 max_fails=3 fail_timeout=10s;  # 10秒内失败3次则标记为不可用
    server 172.16.108.43:80 max_fails=3 fail_timeout=10s;
    
    # 负载均衡策略(可选)
    least_conn;  # 最少连接数策略
}
参数说明:
  • max_fails:在 fail_timeout 时间内,允许的最大失败请求次数。

  • fail_timeout:服务器被标记为不可用的时间(超时后自动恢复探测)。

1. 权重(weight)的作用

  • 默认值 :如果未指定 weight,默认值为 1

  • 流量分配规则:根据权重值的比例分配请求。

  • 适用场景:后端服务器性能不均衡时(如一台性能强、一台性能弱),通过权重调整流量分配。

效果:
  • 当某台服务器连续失败 3 次后,Nginx 会将其标记为不可用,10秒内不再分配请求

  • 10秒后,Nginx 会尝试重新发送请求探测是否恢复。

复制代码
http {
    # ... 其他原有配置 ...

    upstream ai-backend {
        server 172.16.108.42:10011 weight=1 max_fails=3 fail_timeout=10s;
        server 172.16.108.43:10011 weight=1 max_fails=3 fail_timeout=10s;
        keepalive 32;
        least_conn;
    }

    server {
        listen 10011;
        server_name 172.16.108.41;

        location / {
            proxy_pass http://ai-backend;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            # 超时时间设为20分钟
            proxy_connect_timeout 1200s;
            proxy_read_timeout     1200s;
            proxy_send_timeout     1200s;
        }
    }

    # ... 其他服务配置 ...
}

http {
    # ... 原有其他配置(如AI服务、日志格式等) ...

    # 定义词向量服务的upstream
    upstream wordvec-backend {
        server 172.16.108.44:10011 weight=1 max_fails=3 fail_timeout=10s;  # 本地Nginx服务器的10011端口(若服务部署在Nginx本机)
        server 172.16.108.42:10011 weight=1 max_fails=3 fail_timeout=10s;  # 另一台服务器的10011端口
        keepalive 32;                # 保持长连接
        least_conn;                  # 最少连接数负载均衡
    }

    # 词向量服务的独立监听端口(例如10012)
    server {
        listen 6001;                # 监听外部请求的端口
        server_name 172.16.108.41;   # Nginx服务器IP或域名

        location / {
            proxy_pass http://wordvec-backend;  # 转发到词向量后端
            proxy_http_version 1.1;
            proxy_set_header Connection "";    # 启用HTTP 1.1长连接
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            # 超时时间设为20分钟(1200秒)
            proxy_connect_timeout 1200s;  # 连接后端超时
            proxy_read_timeout     1200s;  # 读取响应超时
            proxy_send_timeout     1200s;  # 发送请求超时
        }
    }
}

1. 检查配置文件语法

在重启前 必须验证配置正确性,避免错误配置导致服务崩溃:

sudo nginx -t

nginx: warn load balancing method redefined in /etc/nginx/nginx.conf:57

nginx: warn load balancing method redefined in /etc/nginx/nginx.conf:64

nginx: warn load balancing method redefined in /etc/nginx/nginx.conf:71

nginx: warn load balancing method redefined in /etc/nginx/nginx.conf:79

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

2. 重新加载配置(平滑重启)

传统方式:

复制代码
sudo nginx -s reload

[root@bigdata41 nginx]# sudo nginx -s reload
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:57
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:64
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:71
nginx: [warn] load balancing method redefined in /etc/nginx/nginx.conf:79
nginx: [error] invalid PID number "" in "/run/nginx.pid"

报异常 暂未处理

3. 完全重启服务(强制重启)
复制代码
sudo systemctl restart nginx

sudo systemctl restart nginx 重新启动nginx

sudo systemctl status nginx 查看nginx 状态

将41上已有的6001端口服务迁移走

sudo systemctl status nginx

相关推荐
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
zzzzzz3109 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
ping某11 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树8813 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz13 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工13 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
古城小栈13 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
程序猿阿伟13 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
凡人叶枫13 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦13 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw