Appearance
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代码。