mac下报 504 Gateway Time-out

环境详细
系统mac
cmsoctober cms
php环境valet nginx

在我下载插件和主题时
开始报504 Gateway Time-out

我一想就知道肯定是nginx超时 更改一下参数就ok了

但是对于nginx不熟悉的我来说 也确实费了牛劲


  1. nginx更改位置:
    usr/local/etc/nginx/nginx.conf

  2. 更改项:

keepalive_timeout 300
  1. 重启
    sudo nginx -s reload

这就好了
耗费了我40分钟来回查找


查询
php-fpm.conf
valet-fpm.conf

request_terminate_timeou设置在900s左右,
而max_children值根据服务器内存大小和CGI请求数目设置为合理的数值,一般设置为800M左右。

上述方法不好使
最新方法

Leave your October CMS install as is at the error and your browser open.
Open Git Bash
cd ~
cd Homestead
vagrant ssh
sudo nano /etc/nginx/nginx.conf
Arrow down and add the following fastcgi_ lines
fastcgi_buffers 16 32k;
fastcgi_buffer_size 64k;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
sendfile on;
Type vagrant reload.
Select “Try Again” in the October CMS install within your existing browser.

#!/usr/bin/env python # -*- coding: UTF-8 -*- # ################################################################ # Copyright (C), 2022, TP-LINK Technologies Co., Ltd. # File Name: TD428385_static_ip_connectivity_after_reboot.py # Author: linxin@tp-link.com.hk # History: # 1, Mar 18 2017, linxin@tp-link.com.hk, created # ################################################################ import pysat.sat_test import pysat.sat_result import logging import time import self as self import topologies import PyPing import PyIP try: import pysat.rpc as rpc except: import rpc class StaticIpConnectivityAfterReboot(topologies.TopoLanTestCase): def __init__(self): topologies.TopoLanTestCase.__init__(self) self.logger = logging.getLogger(self.__class__.__name__) self.case_info = pysat.sat_test.CaseInfo() self.case_info.name = 'static_ip_connectivity_after_reboot' self.case_info.id = 'TD428385' self.case_info.version = '2017/03/18' self.case_info.author = 'linxin@tp-link.com.hk' self.case_info.testbeds = self.get_testbed_list() self.case_info.description = ''' Step1: 恢复出厂设置并配置DUT和PC的静态IP Step2: 重启DUT并检查网络连接信息 Step3: 验证IP地址生效 Step4: 验证子网掩码和网关设置 Step5: 验证MTU设置对TCP文的影响 Step6: 验证MTU设置对ICMP文的影响 Step7: 验证MTU设置对ICMP分片的影响 ''' def add_task(self): # register the class self.register_case(self.do_test, self.case_info) def do_test(self): # test start self.logger.info('%s start...' % self.case_info.name) try: # ----------------------------------------------------------------------------------------- # Initialize... # ----------------------------------------------------------------------------------------- self.logger.info('Initialize...') result = pysat.sat_result.ResultInfo() time.sleep(2) # 定义测试参数 dut_ip = "192.168.202.10" # 从192.168.202.0/24网段中选择 subnet_mask = "255.255.255.0" gateway = "192.168.202.254" mtu = 1400 primary_dns = "192.168.202.254" secondary_dns = "192.168.203.254" pc_ip_same_net = "192.168.202.100" pc_ip_different_net = "192.168.203.100" # ----------------------------------------------------------------------------------------- # Step1: 恢复出厂设置并配置DUT和PC的静态IP # ----------------------------------------------------------------------------------------- self.logger.step('Step1: 恢复出厂设置并配置DUT和PC的静态IP') # 恢复出厂设置 self.topo.dut.factory_reset() time.sleep(30) # 等待设备重启完成 # 设置DUT为静态IP self.topo.dut.set_wan_static_ip(dut_ip, subnet_mask, gateway, primary_dns, secondary_dns, mtu) self.logger.info('设置DUT为静态IP: %s, 掩码: %s, 网关: %s, MTU: %s' % (dut_ip, subnet_mask, gateway, mtu)) # 设置PC的IP地址 self.topo.dut_lan_iface.set_ip(pc_ip_same_net, subnet_mask) self.logger.info('设置PC IP为: %s, 掩码: %s' % (pc_ip_same_net, subnet_mask)) # 检查设置是否成功 wan_status_info = self.topo.dut.get_wan_status_info() if (wan_status_info['ipaddr'] == dut_ip and wan_status_info['netmask'] == subnet_mask and wan_status_info['gateway'] == gateway): result.add_result(item_id="Step1: 恢复出厂设置并配置DUT和PC的静态IP", passfail=result.PASS, test_comment="设置成功") else: self.break_test("Step1: 恢复出厂设置并配置DUT和PC的静态IP, 设置失败") # ----------------------------------------------------------------------------------------- # Step2: 重启DUT并检查网络连接信息 # ----------------------------------------------------------------------------------------- self.logger.step('Step2: 重启DUT并检查网络连接信息') # 重启DUT self.topo.dut.reboot() time.sleep(60) # 等待设备重启完成 # 检查网络连接信息是否与设置一致 wan_status_info = self.topo.dut.get_wan_status_info() system_info = self.topo.dut.get_system_info() if (wan_status_info['ipaddr'] == dut_ip and wan_status_info['netmask'] == subnet_mask and wan_status_info['gateway'] == gateway and system_info['ip_address'] == dut_ip): result.add_result(item_id="Step2: 重启DUT并检查网络连接信息", passfail=result.PASS, test_comment="网络连接信息与设置一致") else: self.break_test("Step2: 重启DUT并检查网络连接信息, 网络连接信息与设置不一致") # ----------------------------------------------------------------------------------------- # Step3: 验证IP地址生效 # ----------------------------------------------------------------------------------------- self.logger.step('Step3: 验证IP地址生效') # 从PC端ping DUT的静态IP is_ok = PyPing.check_ping(dut_ip) if is_ok: result.add_result(item_id="Step3: 验证IP地址生效", passfail=result.PASS, test_comment="可以Ping通DUT的IP地址") else: self.break_test("Step3: 验证IP地址生效, Ping不通DUT的IP地址") # ----------------------------------------------------------------------------------------- # Step4: 验证子网掩码和网关设置 # ----------------------------------------------------------------------------------------- self.logger.step('Step4: 验证子网掩码和网关设置') # 设置PC IP为同一子网的地址 self.topo.dut_lan_iface.set_ip(pc_ip_same_net, subnet_mask) # 开始抓包 scapy = rpc.RemoteObj(self.topo.dut_lan_iface.hostname, 'PyScapy') linkname = self.topo.dut_lan_iface.get_linkname() scapy.tsniff(timeout=10, iface=linkname, lfilter=scapy.eval_lfilter(r"lambda x:x.haslayer('ICMP') and x['IP'].src == '" + dut_ip + "'")) # 从PC ping DUT PyPing.ping(dut_ip, count=3) # 获取抓包结果 packets = scapy.join_tsniff(timeout=15) # 检查回复包的目的MAC是否为PC的MAC pc_mac = self.topo.dut_lan_iface.get_mac() found_correct_mac = False for pkt in packets: if pkt.haslayer('Ether') and pkt['Ether'].dst == pc_mac: found_correct_mac = True break if found_correct_mac: result.add_result(item_id="Step4: 验证子网掩码和网关设置-同一子网", passfail=result.PASS, test_comment="同一子网通信正常") else: self.break_test("Step4: 验证子网掩码和网关设置, 同一子网通信异常") # 设置PC IP为不同子网的地址 self.topo.dut_lan_iface.set_ip(pc_ip_different_net, "255.255.255.0") # 开始抓包 scapy.tsniff(timeout=10, iface=linkname, lfilter=scapy.eval_lfilter(r"lambda x:x.haslayer('ICMP') and x['IP'].src == '" + dut_ip + "'")) # 从PC ping DUT PyPing.ping(dut_ip, count=3) # 获取抓包结果 packets = scapy.join_tsniff(timeout=15) # 检查回复包的目的MAC是否为网关的MAC # 注意:这里需要先获取网关的MAC地址,可能需要通过ARP查询 # 简化处理:检查回复包的目的MAC不是PC的MAC found_gateway_mac = False for pkt in packets: if pkt.haslayer('Ether') and pkt['Ether'].dst != pc_mac: found_gateway_mac = True break if found_gateway_mac: result.add_result(item_id="Step4: 验证子网掩码和网关设置-不同子网", passfail=result.PASS, test_comment="不同子网通信正常") else: self.break_test("Step4: 验证子网掩码和网关设置, 不同子网通信异常") # ----------------------------------------------------------------------------------------- # Step5: 验证MTU设置对TCP文的影响 # ----------------------------------------------------------------------------------------- self.logger.step('Step5: 验证MTU设置对TCP文的影响') # 开始抓包 scapy.tsniff(timeout=30, iface=linkname, lfilter=scapy.eval_lfilter(r"lambda x:x.haslayer('TCP') and x['IP'].src == '" + dut_ip + "'")) # 通过web访问DUT,触发视频流传输 self.topo.dut.open_browser("chrome") self.topo.dut.login(open_browser=True, username="admin", password=self.topo.dut.password, waittime=5) self.topo.dut.start_video_preview() time.sleep(10) # 等待视频流传输 # 获取抓包结果 packets = scapy.join_tsniff(timeout=15) # 检查TCP分片包的长度 mtu_valid = True for pkt in packets: if (pkt.haslayer('IP') and len(pkt['IP']) > mtu and pkt['IP'].flags & 0x1): # 检查MF分片标志 # 计算分片包的总长度(不包括最后一片) total_length = len(pkt['IP'].payload) + 20 # IP头20字节 if total_length > mtu: mtu_valid = False break if mtu_valid: result.add_result(item_id="Step5: 验证MTU设置对TCP文的影响", passfail=result.PASS, test_comment="TCP分片符合MTU设置") else: self.break_test("Step5: 验证MTU设置对TCP文的影响, TCP分片不符合MTU设置") # ----------------------------------------------------------------------------------------- # Step6: 验证MTU设置对ICMP文的影响 # ----------------------------------------------------------------------------------------- self.logger.step('Step6: 验证MTU设置对ICMP文的影响') # 开始抓包 scapy.tsniff(timeout=10, iface=linkname, lfilter=scapy.eval_lfilter(r"lambda x:x.haslayer('ICMP') and x['IP'].src == '" + dut_ip + "'")) # 发送不会导致分片的ping请求 ping_size = mtu - 28 # IP头20字节 + ICMP头8字节 PyPing.ping(dut_ip, size=ping_size, count=3) # 获取抓包结果 packets = scapy.join_tsniff(timeout=15) # 检查ICMP回复包是否没有分片 icmp_no_fragment = True for pkt in packets: if (pkt.haslayer('IP') and pkt['IP'].flags & 0x2): # 检查DF不分片标志 # 计算包的总长度 total_length = len(pkt['IP']) if total_length > mtu: icmp_no_fragment = False break if icmp_no_fragment: result.add_result(item_id="Step6: 验证MTU设置对ICMP文的影响-无分片", passfail=result.PASS, test_comment="ICMP文无分片,符合MTU设置") else: self.break_test("Step6: 验证MTU设置对ICMP文的影响, ICMP文异常分片") # ----------------------------------------------------------------------------------------- # Step7: 验证MTU设置对ICMP分片的影响 # ----------------------------------------------------------------------------------------- self.logger.step('Step7: 验证MTU设置对ICMP分片的影响') # 开始抓包 scapy.tsniff(timeout=10, iface=linkname, lfilter=scapy.eval_lfilter(r"lambda x:x.haslayer('ICMP') and x['IP'].src == '" + dut_ip + "'")) # 发送会导致分片的ping请求 ping_size = mtu - 27 # 比MTU小1字节,应该会导致分片 PyPing.ping(dut_ip, size=ping_size, count=3) # 获取抓包结果 packets = scapy.join_tsniff(timeout=15) # 检查ICMP回复包是否分片 icmp_fragmented = False for pkt in packets: if (pkt.haslayer('IP') and pkt['IP'].frag > 0): # 检查分片偏移 icmp_fragmented = True # 检查分片包长度是否符合以太网最小帧长 if len(pkt['IP']) < 64: self.break_test("Step7: 验证MTU设置对ICMP分片的影响, 分片包长度不符合以太网最小帧长") break if icmp_fragmented: result.add_result(item_id="Step7: 验证MTU设置对ICMP分片的影响", passfail=result.PASS, test_comment="ICMP文正确分片,符合MTU设置") else: self.break_test("Step7: 验证MTU设置对ICMP分片的影响, ICMP文未分片") except Exception as ex: # break test by exception self.logger.error('Test fail: %s' % ex) result.add_result(passfail=result.FAIL, test_comment='Test fail: %s' % ex) finally: # saving result try: self.topo.dut.close_browser() except: self.logger.info('关闭浏览器失败') return result ```
最新发布
09-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值