nginx设置连接超时解决504 gateway timeout

您所在的位置:网站首页 nginx端口监听超时设置不了怎么回事儿呀 nginx设置连接超时解决504 gateway timeout

nginx设置连接超时解决504 gateway timeout

2024-06-30 11:40:37| 来源: 网络整理| 查看: 265

nginx做反向代理,默认请求是有一个60秒的超时,如果http请求超过了60秒,再返回,连接就会被nginx中断,前端就会得到504的错误:gateway time-out。

如下,我们可以通过实验验证,默认的超时时间是60秒:

1、我们在页面上,做一个耗时的请求,后台线程sleep(70*1000),模拟这个耗时操作,让这个耗时操作撑过60秒。默认情况下,不使用nginx做反向代理,请求会在70秒后,正常返回。

2、我们使用nginx反向代理,将http://127.0.0.1/struts2hack的请求,代理到http://127.0.0.1:8080上,就是默认正常的请求服务上。

接着,我们点击页面的测试按钮,我们等待1分钟,会出现如下图所示的结果:

请求在一分钟后,即60秒时连接被断开,返回504。这个结果符合预期,说明了nginx默认超时时间是60s,超过60s,连接会被断开,为此,我们需要解决这个问题,就需要设置nginx超时时间了,这里我们将超时时间设置为3600,就是一个小时,这个值可以灵活设置,就是不让他在默认60秒断开链接。

location ~ /struts2hack {     proxy_pass  http://127.0.0.1:8080;     proxy_read_timeout  3600; }

设置之后,我们再次点击页面的测试按钮,我们得到的结果就和最初一样了,经过70秒,服务端返回了数据,请求完成。

 前端页面代码:

nginx timeout! 开始时间: 结束时间: 返回数据: $(function(){ $("#btn-test").click(function(e){ $.ajax({ url:"timeout!test.action", type:"get", beforeSend:function(){ $("#start").val(new Date()); }, success:function(data){ $("#data").val(data.message); $("#end").val(new Date()); }, error:function(XMLHttpRequest,textStatus,errorThrown){ $("#end").val(new Date()); $("#data").val("timeout"); } }); }); });

后端模拟70秒的耗时请求:

package com.xxx.action; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; public class TimeoutAction { public String test() { HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/json;charset=UTF-8"); PrintWriter out = null; try { Thread.sleep(70*1000); out = response.getWriter(); String content = "{\"code\":200,\"message\":\"ok\"}"; out.write(content); } catch (Exception e) { e.printStackTrace(); }finally { if(out!=null) { out.close(); } } return null; } }

最初,我以为使用了jQuery的ajax请求超时,那么需要对ajax做一个超时设置,给参数timeout 设置上一个值,但是最终,发现问题不在ajax超时上,因为默认ajax是不会有超时的,就是永不超时,timeout:0就是默认值。这些可以在JQuery源码中找到。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭