web集群和nginx

1. web集群-HTTP协议

1.1. http概述

默认端口是80

HTTP超文本传输协议: 数据请求与响应.

  • 传输:网站的数据如何传递给用户.
  • 超文本:文本,图片,视频....
  • 用户打开网站后:网站如何传递数据给用户.
  • 专业名字:数据请求与响应.

请求request:打开网站,访问网站

响应response:网站显示出,返回给你想要的内容

curl -v jd.com
wget --debug jd.com

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.20.3 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: jd.com
Connection: Keep-Alive

---request end---
已发出 HTTP 请求,正在等待回应... 
---response begin---
HTTP/1.1 301 Moved Permanently
Date: Wed, 23 Oct 2024 06:41:19 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.jd.com
Server: jfe
Cache-Control: no-cache

---response end---

1.2. HTTP协议版本

http1.0http1.1http2.0http3.0(quic)
特点短连接,每次请求都需要重复建立断开连接加入长连接功能增加并发,访问更快基于udp更快,应用于流媒体
占用服务端资源keepalive功能(网站响应后不会立刻断开,保留下这个连接)
是否加密http不加密的80https加密的443默认基于https
基于tcp/udptcptcptcpudp

现状:

大部分企业还在使用http1.1, 一部分使用http2.0

目前http3.0(QUIC) 流媒体直播在使用.

HTTP1.1 vs 2.0 速度对比:HTTP1.1/HTTP2 加载对比

1.3. HTTP协议详解

  • HTTP请求报文(豹纹)
  • HTTP响应报文(豹纹)

1.3.1. HTTP请求

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.14 (linux-gnu)
Accept: */*
Host: www.baidu.com
Connection: Keep-Alive
---request end---

1.3.2. 请求报文起始行

请求方法: 用于指定客户端如何访问服务端(下载,上传,查看服务端信息)

常见请求方法说明
GET下载(大部分请求)
POST上传(上传文件内容,登录)
HEAD类似于GET,仅仅输出响应的头部信息(查看服务端的信息,一般用与检查)curl -l
DELETE删除
OPTION

资源的位置(URI): 这个资源在网站站点目录的哪个地方,叫什么名字.

这里面写的/lidao.mp4,斜线并非是Linux系统的根目录.这个/叫网站的站点

目录.

URI(统一资源标识符)

站点目录是用于存放网站代码的地方.在nginx中我们可以指定与查看.

温馨提示:

GET /lidaoav.mp4 HTTP/1.1 这里的/不是根,是网站站点目录,未来可以在web服务中进行配置.

/app/code/www/ 站点目录

访问/lidaoav.mp4 === /app/code/www/lidaoav.mp4

1.3.3. 测试www.baidu.com是否可以通过http访问/

curl -I www.baidu.com
发出HEAD请求方法,查看服务端信息,服务端是否可以访问.

curl -I www.baidu.com
wget --method=HEAD --debug www.baidu.com

1.3.4. 请求头

字段(一些关键词)含义
User-AgentUA头客户端代理(用什么工具访问网站),浏览器.
HostHost头表示访问的目标网站:域名或ip
修改请求头
curl -A wei 
或 
curl -H User-Agent:weiwei

空行: 分割请求头与请求报文主体

请求报文主体(body): 一般上传的时候才有.

1.3.5. 浏览器调试查看

浏览器的调试功能:DevTools

F12或Fn+F12查看"网络"部分即可.

1.4. HTTP响应

状态码与服务端信息

协议与版本 HTTP/1.1

状态码: 数字3位,用于描述服务端是否能找到或处理用户的请求.(类似于命令行错误提示)

1.4.1. 响应头

响应头字段
Server显示服务端使用的web服务器及版本
下面了解
Content-Type媒体类型(文件类型)
Content-Length大小
Location跳转之后的新的位置(未来讲解rewrite 301/302),跳转的时候才有
Via/Cache查看是否经过cdn.

1.5. http请求与响应详细流程

1.6. http协议状态码

状态码: 错误提示,反映出服务端是否能够正常的处理用户请求.

状态码含义
2xx表示正常
3xx表示需要进行跳转,表示正常
4xx表示异常,客户端问题
5xx表示异常,服务端问题
详细的状态码说明
200ok访问正常
301Moved Permanently永久跳转
302Found/Moved Temporarily临时跳转
304Not Modified浏览器缓存
401认证失败
403Forbidden权限拒绝(拒绝访问)权限问题,首页文件问题
404Not Found文件找不到,一般辅助错误日志排查
405Method Not Allowed.不准许的请求方法,一般服务器或安全软件限制
413 request entity too largeweb服务的文件大小限制
500Internal Error网站内部错误,SElinux开启,其他原因一般辅助错误日志排查
502Bad Gateway网关错误,一般发生在负载中(类似场景下),请求发送到后面,无人处理,提示502
503 service temporarily unavailable服务临时不可用,后端负载异常等情况人为设置-升级
504 Gateway Time-out网关超时
curl -Lv -L跟随跳转,遇到301/302会读取响应头中的Location头重新访问

HTTP 响应状态码 - HTTP | MDN

2. nginx

2.1. web服务

WEB服务: 网站服务,部署并启动了这个服务,你就可以搭建一个网站.

WEB中间件: 等同于WEB服务

2.2. 常见网站服务(web中间件)

网站服务说明官网
通过WEB中间件
Nginx大部分使用nginx,Enginex 异步模型(epoll)nginx documentation
Tengine基于Nginx二开,淘宝开源, 更多内置模块The Tengine Web Server
Openresty基于Nginx二开,加强Lua 功能与模块
apache(httpd)目前较少使用. select模型 (同步)
……
特殊环境
Tomcat/Jboss/Jetty/Weblogic运行java环境的,web服务
PHP运行php环境,需要ngx(LNMP)
Python/Golang.
信创(国产化)

2.3. 上手nginx

记录常用服务的版本: 1.16.x 1.18.x

选用稳定版本,上一个稳定版本.

rpm -qa |grep nginx

[root@web01 ~]# cat /etc/yum.repos.d/ngx.repo 

name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true systemctl enable --now nginx systemctl status nginx ss -lntup |grep nginx ps -ef |grep nginx curl 10.0.0.7 curl -v 10.0.0.7 浏览器访问: http://10.0.0.7:80/

2.4. 目录结构

Nginx不同的安装方法:目录,文件会有所区别.

下面是yum/apt安装默认的路径.不同系统会有差异.

编译安装的ngx就不同了.

目录结构说明
/etc/nginx/nginx各种配的目录
/etc/nginx/nginx.conf主配置文件
/etc/nginx/conf.d/*.conf子配置文件(网站),如果没有手动创建conf.ddefault.d 子配置文件
/etc/nginx/conf.d/default.conf默认的子配置文件 不一定存在.
/usr/sbin/nginxngx命令
/usr/share/nginx/html/ngx默认的站点目录,网站的根目录(可以通过 查看配置得知)
/var/log/nginx/ngx日志:访问日志,错误日志,跳转日志
其他目录和文件说明
/etc/logrotate.d/nginx日志切割(防止文件过大)
/etc/nginx/mime.types媒体类型
/etc/nginx/fastcgi_paramsngx+php
/etc/nginx/uwsgi_paramsngx+python
/usr/lib/systemd/system/nginx.servicesystemctl配置文件
/var/cache/nginx/缓存目录
点赞
  1. 蹦跶的五花肉说道:
    Google Chrome Android 10
    你这只懒惰的小臭猪
  2. 蹦跶的五花肉说道:
    Google Chrome Android 10
    晚安💤

发表回复

电子邮件地址不会被公开。必填项已用 * 标注