首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx怎样隐藏上游错误

本文将介绍Nginx作为代理服务器转发请求,next upstream机制检测错误并重新转发给上游的执行流程。...注意,该时长的起始时间是首次转发请求算起(而不是每次更换上游Server重新计算),而截止时间则是最后1次检测next upstream是否允许使用的时刻: Syntax: proxy_next_upstream_timeout...对于符合REST规范的HTTP消息,响应码应当能够准确地描述应用层错误,比如,2xx错误码通常表示成功,4xx错误码表示请求参数有问题,而5xx错误码表示服务器出现故障。...基于RFC中对各错误码的定义,Nginx允许对以下7种可以进行重试的错误码启用next upstream功能: 响应码 字符串描述 含义 403 Forbidden 服务器理解请求的含义,但没有权限执行此请求...404 Not Found 服务器没有找到对应的资源 429 Too Many Requests 客户端发送请求的速率过快(Nginx版本 >= 1.11.13提供)。

40340

如何设计API返回码(错误码)?

5XX 服务器错误服务器在处理请求的过程中发生错误 对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功, 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,...虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂 字段 类型 说明 code int 返回码 message string 返回码说明 参考HTTP状态码的思路,我们对错误码进行分段...比方说 20000-29999表示订单创建失败: 20001,订单创建失败,存在进行中的订单 20002,订单创建失败,上一个订单正在排队创建中 这两种错误情况如果是给用户看,可能就只适合看到:抱歉,...API提供者来提供个性化的Message能力会更好 我们可以把转译的消息配置到数据库,并缓存到Redis或者API本机 application_id code message 100001 20001 抱歉...100001 20002 抱歉,您有一个正在进行中的订单,请到我的订单列表中处理。 然后在请求处理结束即将返回的时候,根据application_id+code,去匹配替换message ?

5.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

如何优雅的处理Restful

,前端人员经常会询问下一步业务流程的接口定义在哪里,对接形式是什么样的 以上只是前后端人员通过接口交互的一小部分问题,这些问题就好比"牙痛",不致命,但是在整个软件开发的生命周期内,天天"牙痛”是要命的...(404, "not found"), // 服务器错误 SERVER_ERROR(500,"server error"), BUSINESS_EXCEPTION(4000,...,这里着重参考一下Http定义的规范: 常见的HTTP状态码如: 200 - 请求成功; 301 - 资源(网页等)被永久转移到其它URL; 404 - 请求的资源(网页等)不存在; 500 - 内部服务器错误...message:错误信息 在发生错误时,如何友好的进行提示? 1.根据code 给予对应的错误码定位; 2.把错误描述记录到message中,便于接口调用者更详细的了解错误。...4 400-499 客户端错误 请求包含语法错误或无法完成请求 5 500-599 服务端错误 服务器在处理的时候发生错误 2.3统一结果类 /** * @Author:qxy * @Date:

93630

基于memcache的缓存机制的6个指令

它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。...,方便对存储内容进行监视 支持条件查询,筛选出满足条件的KEY或VALUE 数组、JSON等序列化字符反序列显示 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池...用于配置了一组memcached服务器的情况下使用,服务器组中个memcached服务器的访问规则遵循upstream指令配置的轮询规则,同时可以使用该指令配置在发生那些异常情况,将请求顺次加油下一个组内地而服务器处理...其中, status 未设置的memcached服务器返回状态,可以是多个       error 在建立连接,向memcached服务器发送请求或者读取响应头服务器发生错误       timeout...在建立连接,向memcached服务器发送请求或者读取相应头服务器发生连接超时       incalid_header, memcached 服务器返回的响应头为空或者无效       not_found

45420

网络协议之:memcached text protocol详解

protocol听起来很高深神秘,但是实际上protocol就是约定好的双方交互的消息格式。...memcached支持的命令 memcached支持三种命令,分别是存储命令,读取命令和其他命令。...“NOT_STORED\r\n” 表示数据因为某些错误存储成功。这通常意味着不满足“add”或“replace”命令的条件。...noreply表示是否需要收到服务器的返回值。 服务器端的返回值有两种: “TOUCHED\r\n” 表示修改成功。 “NOT_FOUND\r\n” 表示要修改的对象不存在。...值存储失败 EXISTS cas中要存储的对象已存在 NOT_FOUND 要修改的对象不存在 ERROR 提交了未知的命令 CLIENT_ERROR errorstring 客户端输入有误,具体的错误信息存放在

36010

Harbor进阶秘笈:API 的使用和集成

在请求 API ,有可能会因为客户端或者服务器发生错误而导致请求失败,在这种情况下,一种标准的API错误会被返回,用来说明错误发生的具体原因。...返回的 API 错误的格式是一个数组,数组中的每个元素都代表一个具体的错误信息,每个错误信息都由 HTTP 响应状态码和具体的错误内容两部分构成,而具体的错误内容又包含两个字段:错误码错误信息。...":[{"code":"NOT_FOUND", "message":"repository library/hello-world not found"}]}, 在返回的错误数组(errors[])中只包含一个元素...,在该元素中 “NOT_FOUND” 是错误码,“repository library/hello-world not found” 是错误信息。...4.查询关键字“q” Harbor 2.0 开始,部分 API 引入了对查询关键字“q”的支持,提供了一种通用的方式来过滤查询结果。 目前查询关键字“q”支持5种查询语法。

8.4K30

记一次nodejs问题排查

虽然通过ECONNRESET错误码我们容易查到这个错误意味着什么,但是通过源码和分析工具进行一次彻底的分析,会让你更加了解这个错误的产生和原理。更让人神清气爽。...这时候nodejs就在底层注册了一个可读事件,等到有数据或者发送出错的时候,会触发上层回调(虽然只注册了可读事件,但是如果有错误发生,epoll会返回POLLIN和POLLERR事件)。...上面是操作系统收到一个rst包的操作。设置对应socket的错误信息为ECONNRESET,并设置状态为close。如果这时候用户执行read会怎样呢? ?...read函数会直接把错误信息返回给调用方。我们回到libuv中,当libuv调用read函数的时候,返回了错误码ECONNRESET。然后libuv执行nodejs的read_cb回调。...2 抓包分析 登录服务器,使用tcpdump工具,主要是过滤出想要的数据包。这里找出有问题的那几个ip。

2.9K20

网络协议之:memcached text protocol详解

protocol听起来很高深神秘,但是实际上protocol就是约定好的双方交互的消息格式。...memcached支持的命令 memcached支持三种命令,分别是存储命令,读取命令和其他命令。...“NOT_STORED\r\n” 表示数据因为某些错误存储成功。这通常意味着不满足“add”或“replace”命令的条件。...noreply表示是否需要收到服务器的返回值。 对应的服务器端返回值可能有两个: “DELETED\r\n” 表示删除成功 “NOT_FOUND\r\n” 表示要删除的对象并不存在。...noreply表示是否需要收到服务器的返回值。 服务器端的返回值有两种: “TOUCHED\r\n” 表示修改成功。 “NOT_FOUND\r\n” 表示要修改的对象不存在。

34320

人脸识别案例:接口返回“图片下载错误

当用户选择URL入参,偶有返回“图片下载错误”的错误码。严重,可能在某一间段大量返回该错误码,导致影响用户的现网业务。...业务错误码 说明 FailedOperation.ImageDownloadError 图片下载错误。 原因分析 根本原因 图片下载超时,超过下载时间允许的最大阈值4.5s。...客户使用姿势问题 历史案例来看,导致图片下载超时主要是客户侧自身使用姿势的问题,具体包括: 1.用户的图片服务器某一刻负载过高,导致公网请求该图片变慢。...不过从人脸识别产品发布至今,从未发生过下载代理服务不稳定导致大面积报错,一方面是因为人脸识别产品的服务保证稳定性、高可用性等,另一方面是人脸识别对现网各种报错情况有实时监控和告警,大盘的整体监控情况一直稳定...2.若用户使用海外服务器存储图片,最好将海外图片迁移到国内服务器上;或者使用CDN服务,这样在进行海外图片下载,会利用CDN在国内的节点进行请求,从而保证了请求速率。

4.8K344

【Socket】实现MiniHttpServer

前言 实现一个http 服务器项目,服务器启动后监听80端口的tcp 连接,当用户通过任意一款浏览器(IE、火狐和腾讯浏览器等)访问我们的http服务器,http服务器会查找用户访问的html页面是否存在...---- HTTP协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议...sockaddr_in client; int client_socket; int len; char client_ip[64]; char buf[256]; pthread_t id;//存储线程...headers(int client_sock,FILE* resource); //发送html文件中的内容 void cat(int client_sock,FILE* resource); //服务器内部错误...同一间点上,只能有一个线程执行。 每个线程都处于执行中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。

25920

微服务日志体系最佳实践

className – 接口名称method – 方法名称,time – 耗时,单位为mssuccess – 成功失败标识,00成功,01失败errorCode – 错误码,业务自定义,最好是整体的错误码格式错误类型...我一般会定义一个ErrorContext类,其中包含一个ArrayList用于存放异常对象,异常对象含错误码信息、错误描述信息、错误发生位置(appName)三个属性。.../*** 错误上下文*/public class ErrorContext extends ToString { /** * 错误栈,用于存储错误信息 */ private... * 添加信息尾部添加,故位置越靠前,错误发生时间越早,或理解为最根本错误 * * @param error 公共错误对象 */ public void...而监控,是你发现异常的最佳方案,你不可能24小盯着服务器的日志,你非常人,咱就不说了。

84491

GOTO Berlin: Web API设计原则

如果你暴露这样一个模型,那么最终将会成为CRUD(创建、读取、更新和删除)和资源。这并不一定是一件坏事,有时你所需要的所有内容便是一个纯粹的CRUD API。...使用动词传达目的,客户端想要做什么,它们期望服务器得到哪些行为。 不要将错误码的选择限制为200和500。...使用完整范围的错误码,有160个错误码供你选择,所以几乎每一种类型的错误都有一个对应的错误码。使用正确的错误码是客户端能够合理处理错误的关键。...一个常见的问题是,尽管发生了一个错误但是服务器依然返回200,OK。在这种事情发生假装所有事情运行良好显然不是一个很好的想法。 不要忽略缓存。...通常情况下,当资源发生变化的时候实际上它仅仅是展示发生了改变,而它依然是那个资源,应该使用同一个URL,因此避免将URL版本化。

80150

【MODBUS】Modbus异常错误码说明

异常错误码说明 其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器...错误代码表 代码 名称 含义 01 非法功能 对于服务器(或站)来说,询问中接收到的功能码是不可允许的操作,可能是因为功能码仅适用于新设备而被选单元中不可实现同时,还指出服务器(或站)在错误状态中处理这种请求...04 站设备故障 当服务器(或站)正在设法执行请求的操作,产生不可重新获得的差错。...05 确认 与编程命令一起使用,服务器(或站)已经接受请求,并且正在处理这个请求,但是需要长持续时间进行这些操作,返回这个响应防止在客户机(或主站)中发生超时错误,客户机(或主机)可以继续发送轮询程序完成报文来确认是否完成处理...08 存储奇偶性差错 与功能码20和21以及参考类型6一起使用,指示扩展文件区不能通过一致性校验。服务器(或站)设备读取记录文件,但在存储器中发现一个奇偶校验错误

90210

liteos事件(六)

一个任务可以等待多个事件的发生:可以是任意一个事件发生唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用32位无符号整型变量来表示,每一位代表一个事件。...1.3 事件读取模式 在读事件,可以选择读取模式。读取模式如下: 所有事件(LOS_WAITMODE_AND):读取掩码中所有事件类型,只有读取的所有事件类型都发生了,才能读取成功。...3.4 Event 错误码 序号 定义 实际值 描述 参考解决方案 1 LOS_ERRNO_EVENT_SETBIT_INVALID 0x02001c00 事件ID的第25个bit不能设置为1,因为该位已经作为错误码使用...任务锁住,不能读取事件 解锁任务,再读取事件 7 LOS_ERRNO_EVENT_PTR_NULL 0x02001c06 传入的参数为空指针 传入非空入参 错误码定义:错误码是一个32位的存储单元,...31~24位表示错误等级, 23~16位表示错误码标志, 15~8位代表错误码所属模块, 7~0位表示错误码序号,如下 #define LOS_ERRNO_OS_ERROR(MID, ERRNO) \

99930

「跳转404错误页面」「全局异常捕获」

前言 本文教程示例代码见码云仓库:https://gitee.com/bingqilinpeishenme/boot-demo 异常处理在Java中是一种常规的操作,在代码中我们常用的方法是try catch...但是,如果Controller发生异常了怎么办?业务层的异常可以在Controller捕获,Controller抛出的异常怎么捕获?SpringMvc的异常怎么捕获?...这个时候常见的操作有两种: 跳转错误页面,例如:找不到路径的时候跳转404,代码报错的时候跳转500等 响应统一的报错信息,使用Result对象(自定义的实体类)封装错误码错误描述信息响应【分布式服务调用的时候推荐使用...com.lu.bootexception.exception; public class ErrorReturnResultException extends RuntimeException { /** * 错误码...com.lu.bootexception.exception; public class ErrorReturnPageException extends RuntimeException { /** * 错误码

1.5K30
领券