post请求

post请求过程

浏览器通过 DNS 协议,获取域名对应的 IP 地址。

浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。

浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文。

nginx收到 HTTP 请求报文后(如果配置了upstream,会根据负载均衡算法选择一个后端服务器),根据配置文件中的location块来匹配请求的URL

nginx转发请求到后端服务器,后端服务器处理请求,返回HTTP响应报文给nginx,nginx将响应发送给游览器

浏览器收到 HTTP 响应报文后,根据 HTML 中的其他资源的 URL,再次发起 HTTP 请求,直到网页完全加载显示。

浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。

请求超时

nginx返回错误码给客户端

502 Bad Gateway:服务器返回不完整(超时未返回)、无效响应(响应格式不正确或者不符合HTTP协议)时返回此错误。

503 Service Unavailable:nginx无法连接到服务器时返回此错误。

504 Gateway Timeout:当nginx无法在设定时间内从服务器获得响应时返回(默认60秒,也可以配置proxy_timeout)

如果ngnix配置了重试机制proxy_next_upstream,可以在特定的错误(比如超时或者502错误码)下使用下一个可用服务器(同时需要配置重试次数或者重试时间控制)

返回响应后,服务端还是会正常处理请求并在完成后响应,并且这个请求状态可能是200,但是在返回响应给客户端时,客户端会响应RST包重置该连接,也就是该响应最终并没有成功返回给客户端。

相关推荐
奋进的芋圆1 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin1 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model20051 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉2 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国2 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_941882482 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈3 小时前
两天开发完成智能体平台
java·spring·go
alonewolf_993 小时前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹3 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
专注_每天进步一点点3 小时前
【java开发】写接口文档的札记
java·开发语言