当前位置: 首页 > article >正文

nginx分发请求超时切换服务

nginx的upstream模块实现超时自动切换服务

upstream testfail {

    server 192.168.1.218 max_fails=1 fail_timeout=10s;

    server 192.168.1.129 max_fails=1 fail_timeout=10s;

}

max_fails代表失败尝试次数,达到设置的次数则视为该服务不可用,

fail_timeout代表服务标为不可用后需等待fail_timeout的值对应时间后才会重新尝试连接该服务。

想要设置服务超时切换服务的关键在于proxy_read_timeout的配置,不仅仅分发服务的配置,而且还要看upstream下的服务(218和129)中配置的proxy_read_timeout,这里读取的超时是php-fpm的响应超时时间。

只有当分发服务的proxy_read_timeout < upstream下的服务的proxy_read_timeout,且upstream下的服务的proxy_read_timeout小于php执行的超时时间才能实现超时切换服务。

不然即便upstream的服务超时了返回结果是超时,但对于分发服务就是有响应,错误响应也是响应而不会视为超时。

分发服务:

server {

    listen       8080;
    server_name  localhost;

    error_log logs/error_8080.log;

    location / {
        proxy_pass http://testfail;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 non_idempotent;
        proxy_connect_timeout 5s;
        proxy_read_timeout 30s;
        proxy_send_timeout 10s;
    }

}

192.168.1.129服务:

location ~\.php(.*)$ {

        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_connect_timeout 10;
        fastcgi_read_timeout 10;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFo $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        include fastcgi_params;
}

proxy_next_upstream后的参数代表哪些情况下会触发转发请求到下一个上游服务。

error 参数用于指定在与上游服务器建立连接、发送请求或读取响应头时发生网络错误的情况,例如网络不可达,网络故障等情况。

timeout适用于超时,基本依据的是proxy_connect_timeout, proxy_read_timeout,proxy_send_timeout这几个超时设置,而一般情况下连接超时和发送超时的情况很少触发,基本主要看proxy_read_timeout,可以视为上游服务的响应时间,超时即触发转发。

invalid_header应该是对应的是设置了无效的header

http_500 http_502 http_503 http_504则是对应http响应码,请求响应500、502、503、504时触发转发。

non_idempotent代表的是会转发非幂等请求(post、put、delete等),不添加时默认只处理转发幂等请求如get请求。


http://www.kler.cn/a/523986.html

相关文章:

  • 安卓逆向之脱壳-认识一下动态加载 双亲委派(二)
  • 实时数据处理与模型推理:利用 Spring AI 实现对数据的推理与分析
  • LCR 139.训练计划 I
  • C语言-运算符
  • 分布式微服务系统架构第88集:kafka集群
  • C语言基础3
  • C#:25大前沿特性揭秘
  • Axure PR 9 旋转效果 设计交互
  • C#System.Threading.Timer使用实例
  • 有限元分析学习——Anasys Workbanch第一阶段笔记梳理
  • 定西市建筑房屋轮廓数据shp格式gis无偏移坐标(字段有高度和楼层)内容测评
  • 【Samba】Ubuntu20.04 Windows 共享文件夹
  • 【Unity3D】实现2D角色/怪物死亡消散粒子效果
  • 基于STM32的智能家用温控器设计
  • Linux中page、buffer_head、bio的关系
  • 【Pandas】pandas Series count
  • UiAutomator的详细介绍
  • 网络工程师 (3)指令系统基础
  • CSS核心
  • 洛谷P1030 [NOIP2001 普及组] 求先序排列(c++)详解
  • PydanticAI应用实战
  • aerodrome交易所读合约分析
  • 模板泛化类如何卸载释放内存
  • 【反悔堆】【hard】力扣871. 最低加油次数
  • 最近遇到的一些 Android 小问题
  • 省级数字经济发展水平数据(2011-2022年)-社科数据