前言
记录Linux系统的一些网络小技巧与小工具
非网工
常见命令
从ping说起
- Ping通过将一个或多个ICMP(Internet控制消息协议)Echo请求包发送到指定目标IP并等待回复来工作。当目标IP收到包时,它将响应ICMP回复。
- ping命令是iputils(或iputils-ping)程序包的一部分,该程序包已预先安装在绝大多数Linux发行版上。ping命令也可用于Windows,MacOSX和FreeBSD。
# ping常见命令参数如下 -d 使用Socket的SO_DEBUG功能。 -f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。 -n 只输出数值。 -q 不显示任何传送封包的信息,只显示最后的结果。 -r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。 -R 记录路由过程。 -v 详细显示指令的执行过程。 -c 数目:在发送指定数目的包后停止。 -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。 -I 网络接口:使用指定的网卡送出数据包。 -l 前置载入:设置在送出要求信息之前,先行发出的数据包。 -p 范本样式:设置填满数据包的范本样式。 -s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。 -t 存活数值:设置存活数值TTL的大小。 -4 使用ipv4地址 -6 使用ipv6地址
再来看看ping打印的输出
ping -c 10 www.baidu.com PING baidu.com (110.242.68.66) 56(84) bytes of data. 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=244 time=39.5 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=244 time=39.3 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=244 time=39.3 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=4 ttl=244 time=39.5 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=5 ttl=244 time=39.4 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=6 ttl=244 time=39.3 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=7 ttl=244 time=39.3 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=8 ttl=244 time=39.4 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=9 ttl=244 time=39.5 ms 64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=10 ttl=244 time=39.5 ms --- baidu.com ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9012ms #最后这个百分比就是丢包率 rtt min/avg/max/mdev = 39.334/39.445/39.563/0.152 ms #分别表示最小延迟、平均延迟、最大延迟、抖动(抖动就是延迟标准差) 根据上面的结果,我们可以得到结论: 延迟:39.445ms 抖动: 0.152ms 丢包率: 0.0%
所以不要只用ping来测通不通了,他还能做别的
看看带宽
首先是iftop
- iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。iftop 可以监控指定网卡的实时流量、端口连接信息、反向解析 IP 等,还可以精确显示本机网络流量及网络内各主机和本机相互通信的流量集合,非常适合于监控代理服务器或路由器的网络流量。
- iftop 对检测流量异常的主机非常有效,通过 iftop 的输出可以迅速定位主机流量异常的根源,这对于网络故障排查、网络安全检测是十分有用的。缺点就是无报表功能,且必须以 root 身份才能运行。
安装iftop
# 包管理工具安装 如 yum -y install iftop # 编译安装
# 常见参数 -i 指定需要检测的网卡, 如果有多个网络接口,则需要注意网络接口的选择,如:# iftop -i eth1 -B 将输出以 byte 为单位显示网卡流量,默认是 bit -n 将输出的主机信息都通过 IP 显示,不进行 DNS 解析 -N 只显示连接端口号,不显示端口对应的服务名称 -F 显示特定网段的网卡进出流量 如: iftop -F 192.168.85.0/24 -h 帮助,显示参数信息 -p 以混杂模式运行 iftop,此时 iftop 可以用作网络嗅探器 -P 显示主机以及端口信息 -m 设置输出界面中最上面的流量刻度最大值,流量刻度分 5 个大段显示 如:# iftop -m 100M -f 使用筛选码选择数据包来计数 如 iftop -f filter code -b 不显示流量图形条 -c 指定可选的配置文件,如:iftop -c config file -t 使用不带 ncurses 的文本界面, 以下两个是只和 -t 一起用的: -s num num 秒后打印一次文本输出然后退出,-t -s 60 组合使用,表示取 60 秒网络流量输出到终端 -L num 打印的行数 -f 参数支持 tcpdump 的语法,可以使用各种过滤条件。
默认情况下,iftop 显示系统第一块网卡的流量信息,如果要显示指定网卡信息,可通过“-i”参数实现。执行iftop -P -i eth0命令,得到下图所示的 iftop 的一个典型输出界面
第一部分 iftop 输出中最上面的一行,此行信息是流量刻度,用于显示网卡带宽流量。 第二部分 此部分为分割线中间的部分,其中又分别分为左、中、右三列。左列和中列,记录了哪些 IP 或主机正在和本机的网络进行连接。其中,中列的“=>”代表发送数据,“<=”代表接收数据,通过这个指示箭头可以很清晰地知道两个 IP 之间的通信情况。最右列又分为三小列,这些实时参数分别表示外部 IP 连接到本机 2 秒内、10 秒内和 40 秒内的平均流量值。 另外,这个部分还有一个流量图形条,流量图形条是对流量大小的动态展示,以第一部分中的流量刻度为基准。通过这个流量图形条可以很方便地看出哪个 IP 的流量最大,进而迅速定位网络中可能出现的流量问题。 第三部分 位于 iftop 输出的最下面,可以分为三行,其中,“TX”表示发送数据,“RX”表示接收数据,“TOTAL”表示发送和接收全部流量。与这三行对应的有三列,其中“cum”列表示从运行 iftop 到目前的发送、接收和总数据流量。“peak”列表示发送、接收以及总的流量峰值。“rates”列表示过去 2s、10s、40s 的平均流量值。
除此之外,和top类似,iftop也能交换操作
参数 含义 P 通过此键可切换暂停/继续显示 h 通过此键可在交互参数界面/状态输出界面之间来回切换 b 通过此键可切换是否显示平均流量图形条 B 通过此键可切换显示2秒、10秒、40秒内的平均流量 T 通过此键可切换是否显示每个连接的总流量 j/k 按j键或k键可以向上或向下滚动屏幕显示当前的连接信息 l 通过此键可打开iftop输出过滤功能,比如输入要显示的IP,按回车后,屏幕就只显示与这个IP相关的流量信息 L 通过此键可切换显示流量刻度范围,刻度不同,流量图形条会跟着变化 q 通过此键可退出iftop流量监控界面 n 通过此键可使iftop输出结果以IP或主机名的方式显示 s 通过此键可切换是否显示源主机信息 d 通过此键可切换是否显示远端目标主机信息 t 通过此键可切换iftop显示格式,连续按此键可依次显示:以两行显示发送接收流量、以一行显示发送接收流量、只显示发送流量/接收流量 N 通过此键可切换显示端口号/端口号对应服务名称 S 通过此键可切换是否显示本地源主机的端口信息 D 通过此键可切换是否显示远端目标主机的端口信息 p 通过此键可切换是否显示端口信息 1/2/3 根据最近 2 秒、10 秒、40 秒的平均网络流量排序 < 通过此键可根据左边的本地主机名或IP地址进行排序 > 通过此键可根据远端目标主机的主机名或IP地址进行排序 o 通过此键可切换是否固定显示当前的连接
再来看看iperf
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息
# 常用参数 -f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K -i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2 -l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16 -m 显示tcp最大mtu值 -o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt -p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999 -u 使用udp协议 -w 指定TCP窗口大小,默认是8KB -B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数) -C 兼容旧版本(当server端和client端版本不一样时使用) -M 设定TCP数据包的最大mtu值 -N 设定TCP不延时 -V 传输ipv6数据包 server专用参数 -D 以服务方式运行ipserf,eg:iperf -s -D -R 停止iperf服务,针对-D,eg:iperf -s -R -d 同时进行双向传输测试 -n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000 -r 单独进行双向传输测试 -t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5 -F 指定需要传输的文件 -T 指定ttl值
举个例子
两台服务器,IP地址分别为 192.168.2.105 和 192.168.2.106 # 192.168.2.1上执行 iperf -s # 192.168.2.2上执行,执行20秒,2秒显示一次 iperf -c 192.168.2.2 -t 20 -i 2 测试结果 942 Mbits/sec -- --- 943 Mbits/sec 服务器之间为1000Mbits左右
不服抓个包
Tcpdum是Linux上强大的网络数据采集分析工具
# 常见参数 -A 以ASCII格式打印出所有分组,并将链路层的头最小化。 -c 在收到指定的数量的分组后,tcpdump就会停止。 -C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。 -d 将匹配信息包的代码以人们能够理解的汇编格式给出。 -dd 将匹配信息包的代码以c语言程序段的格式给出。 -ddd 将匹配信息包的代码以十进制的形式给出。 -D 打印出系统中所有可以用tcpdump截包的网络接口。 -e 在输出行打印出数据链路层的头部信息。 -E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。 -f 将外部的Internet地址以数字的形式打印出来。 -F 从指定的文件中读取表达式,忽略命令行中给出的表达式。 -i 指定监听的网络接口。 -l 使标准输出变为缓冲行形式,可以把数据导出到文件。 -L 列出网络接口的已知数据链路。 -m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。 -M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。 -b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。 -n 不把网络地址转换成名字。 -nn 不进行端口名称的转换。 -N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。 -t 在输出的每一行不打印时间戳。 -O 不运行分组分组匹配(packet-matching)代码优化程序。 -P 不将网络接口设置成混杂模式。 -q 快速输出。只输出较少的协议信息。 -r 从指定的文件中读取包(这些包一般通过-w选项产生)。 -S 将tcp的序列号以绝对值形式输出,而不是相对值。 -s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。 -T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。 -t 不在每一行中输出时间戳。 -tt 在每一行中输出非格式化的时间戳。 -ttt 输出本行和前面一行之间的时间差。 -tttt 在每一行中输出由date处理的默认格式的时间戳。 -u 输出未解码的NFS句柄。 -v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。 -vv 输出详细的报文信息。 -w 直接将分组写入文件中,而不是不分析并打印出来。
# tcpdump语法如下 tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
常用命令: #抓取所有经过指定网络接口上的数据包 tcpdump -i eth0 #抓取所有经过 eth0,目的或源地址是 10.37.3.25 的网络数据: tcpdump -i eth0 host 10.37.63.255 #抓取主机10.37.63.255和主机10.37.63.61或10.7.63.5的通信: tcpdump host 10.37.63.255 and (10.37.63.61 or 10.37.63.95) #抓取主机192.168.13.210除了和主机10.37.63.61之外所有主机通信的数据包 tcpdump -n host 10.37.63.255 and !10.37.63.61 #抓取主机10.37.63.3发送的所有数据: tcpdump -i eth0 src host 10.3.63.5 #抓取主机10.37.63.3接收的所有数据: tcpdump -i eth0 dst host 10.3.63.5 #抓取主机10.37.63.3所有在TCP 80端口的数据包: tcpdump -i eth0 host 10.3.63.5 and tcp port 80 #抓取HTTP主机10.37.63.3在80端口接收到的数据包: tcpdump -i eth0 host 10.3.63.5 and dst port 80 #抓取所有经过 eth0,目的或源端口是 25 的网络数据 tcpdump -i eth0 port 25 tcpdump -i eth0 src port 25 tcpdump -i eth0 dst port 25 #抓取所有经过 eth0,网络是 192.168上的数据包 tcpdump -i eth0 net 192.168 tcpdump -i eth0 src net 192.168 tcpdump -i eth0 net 192,168,1.0/24 #协议过滤 tcpdump -i en0 tcp
网络追踪
traceroute分为ipv4和ipv6,对应命令分别为traceroute和traceroute6,可以直接使用包管理工具安装
# traceroute baidu.com traceroute to baidu.com (110.242.68.66), 30 hops max, 60 byte packets 1 gateway (10.10.21.254) 0.282 ms 0.278 ms 0.277 ms 2 10.10.16.1 (10.10.16.1) 4.114 ms 4.372 ms 4.700 ms 3 * * * 4 * * * 5 * * * 6 * * * 7 121.46.20.66 (121.46.20.66) 9.658 ms 10.026 ms 9.954 ms 8 * * * 9 * * * 10 * * * 11 * * * 12 122.13.73.252 (122.13.73.252) 45.839 ms 3.074 ms 45.820 ms 13 122.13.73.253 (122.13.73.253) 7.740 ms 7.725 ms 7.920 ms 14 122.13.73.254 (122.13.73.254) 34.859 ms 34.927 ms 31.998 ms 15 58.254.131.33 (58.254.131.33) 1.883 ms 1.885 ms 9.519 ms 16 120.80.137.137 (120.80.137.137) 2.432 ms 2.421 ms 2.100 ms 17 * * * 18 * * 219.158.115.78 (219.158.115.78) 35.971 ms 19 110.242.66.166 (110.242.66.166) 40.112 ms 110.242.66.162 (110.242.66.162) 40.870 ms 110.242.66.166 (110.242.66.166) 39.900 ms 20 221.194.45.134 (221.194.45.134) 40.583 ms 221.194.45.130 (221.194.45.130) 38.791 ms 40.342 ms 21 * * * 22 * * * 23 *
与之类似的BestTrace
wget https://cdn.ipip.net/17mon/besttrace4linux.zip unzip besttrace4linux.zip -d /opt/luyou/ cd /opt/luyou/ chmod +x * 命令格式:./besttrace -q 1 10.13.6.1 # ./besttrace -q 1 baidu.com traceroute to baidu.com (39.156.66.10), 30 hops max, 32 byte packets 1 10.10.21.254 0.24 ms * 局域网 2 10.10.16.1 3.39 ms * 局域网 3 * 4 * 5 * 6 * 7 121.46.20.66 11.15 ms AS56040,AS58466,AS135391 中国, 广东, 广州, ofidc.com, 电信/联通/移动 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 183.232.59.101 3.35 ms AS56040 中国, 广东, 广州, chinamobile.com, 移动 16 183.232.59.102 10.20 ms AS56040 中国, 广东, 广州, chinamobile.com, 移动 17 * 18 58.254.129.102 2.87 ms AS136958 中国, 广东, 广州, chinaunicom.com, 联通 19 58.254.131.33 8.10 ms AS136958 中国, 广东, 广州, chinaunicom.com, 联通 20 120.80.137.145 2.77 ms AS17816 中国, 广东, 广州, chinaunicom.com, 联通 21 120.83.0.73 3.22 ms AS17816 中国, 广东, 广州, chinaunicom.com, 联通 22 219.158.15.37 40.29 ms AS4837 中国, 北京, chinaunicom.com, 联通 23 219.158.3.66 38.51 ms AS4837 中国, 北京
常见http状态码
http状态码:1xx 表示临时响应并需要请求者继续执行操作 100:(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101:(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 102: 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。 ------------------------------------------------------------------------------------------------------- http状态码:2XX 表示操作被成功接收并处理 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 201 (已创建) 请求成功并且服务器创建了新的资源。 202 (已接受) 服务器已接受请求,但尚未处理。 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。 205 (重置内容) 服务器成功执行了请求,但是但是没有返回内容,与204不同,他需要请求者重置文档视图(比如,清除表单内容,重新输入) 206 (部分内容) 服务器成功处理了部分 GET 请求。 208 (已经报告) 一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。 226 (IM Used) 服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果。 ------------------------------------------------------------------------------------------------------- http状态码:3XX 表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 308 (永久转移) 这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。 ------------------------------------------------------------------------------------------------------- http状态码:4XX 表示客户端错误,请求包含语法错误或无法完成请求 400 (错误请求) 服务器不理解请求的语法。 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 403 (禁止) 服务器拒绝请求。 404 (未找到) 服务器找不到请求的网页。 405 (方法禁用) 禁用请求中指定的方法。 406 (不接受) 无法使用请求的内容特性响应请求的网页。 407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 408 (请求超时) 服务器等候请求时发生超时。 409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。 410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。 411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。 412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。 413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。 415 (不支持的媒体类型) 请求的格式不受请求页面的支持。 416 (请求范围不符合要求) 页面无法提供请求的范围 417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。 418 (我是一个茶壶)这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。 419 (认证超时)并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。 420 (方法失效)不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。 420 (提高你的耐心)也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。 421 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。 422 请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV) 423 Locked当前资源被锁定。(RFC 4918 WebDAV) 424 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV) 425 在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。 426 客户端应当切换到TLS/1.0。(RFC 2817) 428 (需要前置条件)原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。 429 (过多请求)用户已经发送了太多的请求在指定的时间里。用于限制速率。 431 (请求头部字段太大)服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。 440 (登陆超时(微软))一个微软的扩展,意味着你的会话已经超时。 444 (无响应)被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。 449 (重试(微软))一个微软的扩展。请求应该在执行适当的动作之后被重试。 450 (被Windows家长控制阻塞(微软))一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。 451 (由于法律原因而无效(因特网草稿))被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源。 451 (重定向(微软))被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。 494 (请求头太大(Nginx))Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。 495 (证书错误(Nginx))Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。 496 (没有证书(Nginx))Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。 497 (HTTP到HTTPS(Nginx))Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。 498 (令牌超时或失效(Esri))由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。 499 (客户端关闭请求(Nginx))被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。 499 (需要令牌(Esri))由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。 ------------------------------------------------------------------------------------------------------- http状态码:5XX 表示这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错 500 (服务器内部错误) 服务器遇到错误,无法完成请求。 501 (尚未实施) 服务器不具备完成请求的功能。 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。(一般应用挂了,连接建立的) 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。(后端建立出错,超时) 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。 506 由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。 507 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918) 508 (发现环路)服务器发现了一个无限的循环档处理请求的时候。 509 服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。 510 获取资源所需要的策略并没有没满足。(RFC 2774)。 511 (需要网络授权)客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。 520 (未知错误)这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误。本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。 598 (网络读取超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。 599 (网络连接超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面。
# 示例 504 Gateway Time-out # 由nginx默认的fastcgi进程响应慢引起 # fastcgi进程响应缓冲区太小,导致fastcgi进程被挂起 解决办法: 默认的fastcgi进程响应的缓冲区是8K,我们可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k(这表示设置fastcgi缓冲区为8块128k大小的空间) 可以继续修改nginx的超时参数,将参数调大一点 send_timeout 60; 如设置为60秒