Skip to content

curl / wget

两个常用调试和测试命令

shell
curl -v www.baidu.com
wget --debug www.baidu.com

请求 Request

客户端向服务端发出的请求,获取指定内容(下载)、登录、上传

起始行包括HTTP版本状态码状态描述

请求报文(

shell
root@aliyun:~# wget --debug www.baidu.com
---request begin---
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Wget/1.21.2
Accept: */*
Accept-Encoding: identity
Connection: Keep-Alive

[root@huoshan ~]# curl -v www.baidu.com
*   Trying 182.61.200.110:80...
* Connected to www.baidu.com (182.61.200.110) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.76.1
> Accept: */*
  • 起始行:GET / HTTP/1.1
    (方法 GET,URI /,协议版本 HTTP/1.1, 起始行 )。

  • 请求头:

    • Host:目标服务器域名(必填字段)。
    • User-Agent:客户端标识( UA头)。
  • 请求方法:

方法说明
GET获取资源(下载)。
POST提交数据(上传)。
HEAD仅获取响应头。

URI: 资源位置 你要的内容在网站服务器的哪个目录下, 叫什么名字. 注意:URI里面的/(第1个)不是根,是站点目录(网站的根目 录)

  • HTTP版本对比:
版本特点底层协议
HTTP/1.0短连接,性能较低。TCP
HTTP/1.1长连接,支持持久连接。TCP
HTTP/2.0多路复用,头部压缩。TCP
HTTP/3.0基于QUIC协议,减少延迟。UDP

  • 常见请求头:
请求头说明
User-Agent客户端浏览器标识。
Host请求的目标域名。

响应 response

shell
[root@huoshan ~]# curl -Lv www.jd.com -o /dev/null

< HTTP/1.1 302 Moved Temporarily
< Server: nginx
< Date: Sat, 05 Apr 2025 03:25:11 GMT
< Content-Type: text/html
< Content-Length: 138
< Connection: keep-alive
< Location: https://www.jd.com/
< Timing-Allow-Origin: *
< X-Trace: 302-1743823511227-0-0-0-0-0
< Strict-Transport-Security: max-age=3600

< Cache-Control: max-age=120
< Expires: Sat, 05 Apr 2025 03:32:00 GMT
< Origin-Agent-Cluster: ?0
< ser: 192.150
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Age: 13
< Via: http/1.1 ORI-CLOUD-HB1-MIX-68 (jcs [cRs f ]), http/1.1 HB-UNI-3-MIX-222 (jcs [cRs f ])
< Timing-Allow-Origin: *
< X-Trace: 200-1743823909038-0-0-1-4-4;200-1743823911190-0-0-0-0-0;200-1743823922909-0-0-0-1-1
< Strict-Transport-Security: max-age=3600

收到客户端请求后,服务端处理的结果

  • 状态码分类:
状态码说明
2xx成功(如200 OK)。
3xx重定向(如301永久跳转,302临时跳转新旧都在用,)。
4xx客户端错误(如404未找到)。
5xx服务端错误(如500内部错误)。
  • 常见响应头:
响应头说明
Server服务器类型(如Nginx)。
Via/Cache标识是否通过CDN访问。

Http 状态码

  • 状态码:用于检查网站状态(是否可以访问)。

状态码说明

状态码说明
200 OK访问正常,你要的东西服务端有并给你,上传/下载成功。
301 Moved Permanently永久跳转,一般指旧的站点域名不用了,使用新的。响应中Location字段包含新的地址,对运营人员有影响。
302 Moved Temporarily临时跳转,新旧站点都使用中。响应中Location字段包含新的地址,对运营人员有影响。
304 Not Modified用户请求的内容在浏览器缓存,人工设置。
403 Permission Denied权限拒绝,可能原因包括权限问题或首页文件问题。
404 Not Found你要的页面服务器没有,不存在。
500 Internal Error内部错误,具体定位要看日志(错误日志),应用日志(代码日志)。可能原因包括防火墙、SELinux或代码连接数据错误。
502 Bad Gateway网关错误,一般在转发情况才有,后面节点没有人处理请求,全挂了。可能原因包括负载均衡或LNMP/LNMT等架构问题。
503 Service Temp Unavailable服务临时不可用,网站升级,主动展示。系统繁忙无法处理请求。可能原因包括主动设置或负载高。
504 Gateway Timeout类似于502,有人接着处理,但是用户等不及了。一般在转发情况才有,可能原因是负载流量问题,需查看日志。
  • curl -L www.lizi.com:Location自动跟随重定向跳转

web 中间件

  • 中间件:位于代码服务和系统硬件之间,包括web中间件(如nginx、apache)和数据库中间件(如缓存、数据库)。

web 中间件选型

  • nginx:目前使用最多的web服务,使用简单,性能优越。
  • apache:之前使用较多,现在份额基本被nginx或其他占用。
  • nginx 二次开发版本:
    • tengine:淘宝基于nginx的二次开发版本,需要编译安装。
    • openresty:nginx+lua模块,给nginx增加语言功能。
  • caddy:新型web服务,性能高,用golang编写。
  • 云厂商的web服务:特定场景使用。
  • tomcat:处理java代码。

感谢阅读,欢迎交流!