一、Web基础

1.1HTML概述

HTML(全称为Hypertext Markup Language)是一种标记语言,用于创建和组织Web页面的结构和内容。

HTML是构建web页面的基础,定义了页面的结构和内容,通过标记和元素来实现。

1.2MIME

MIME是一种互联网标准,是一种用于标识文件类型的方法。

MIME类型由一个主类型和一个子类型组成,用斜杠(/)分隔,MIME类型的作用是告诉接收方如何解释和处理接收到的文件。

#常见的MIME类型

text/html  HTML网页
text/plain 纯文本文件
image/jpeg JPEG图像
image/png  PNG图像
audio/mpeg MP3音频
video/mp4  MP4视频

1.3URI和URL

1.3.1定义

URI(Uniform Resource Identifier):统一资源标识,分为URL 和 URN。

URL(Uniform Resorce Locator):统一资源定位符,用于描述某服务器某特定资源位置

1.3.2 URI和URL的区别

定义范围:URI是一个广义的概念,用于标识和命名互联网上的资源,可以是URL、URN或其他形式。URL是URI的一种具体实现形式,用于资源的定位和访问。

功能重点:URI强调资源的标识性,用于唯一标识和命名资源。URL则更注重资源的位置性,其中包含了定位和访问资源所需的详细信息。

二、静态资源和动态资源

静态资源和动态资源是两种常见的网络资源类型。

静态资源和动态资源的区别在于内容是否固定不变。

2.1静态资源

静态资源指的是在服务器上保存的文件,其内容在请求和传输过程中不发生变化。

静态资源可以是图片、CSS样式表、JavaScript文件、HTML文件等。

静态资源的请求一般是通过URL直接访问,当客户端发送请求时,服务器直接将这些文件返回给客户端,不进行任何处理。

2.2动态资源

动态资源则是在服务器端通过执行脚本或程序生成的内容,需要占用服务器的资源。

服务器会根据请求中的参数和数据,执行相应的脚本或程序来生成动态内容,然后将生成的内容返回给客户端。

动态资源可以是动态网页、API接口等。

三、HTTP协议

3.1HTTP协议简介

HTTP协议采用了请求/响应模型。

客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。

服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。

3.2HTTP协议版本

http 0.9 功能简陋,仅支持GET方法

http 1.0 相较以前版本可以支持POST、HEAD方法,支持HTML文件以外的其他类型,但不支持持久连接

http 1.1 支持持久连接,即在一个TCP连接里面完成多个http请求和响应,但是每个请求和响应是按照顺序一一对应的

3.3HTTP方法

HTTP定义了一组请求方法,用于指定客户端对资源的操作方式,这些请求命令称为HTTP方法。

方法 作用
GET 对服务器资源获取的简单请求
PUT 向服务器上传指定的资源,如果资源已存在,则替换为新的内容
POST 向服务器提交数据
DELETE 删除服务器上的某些资源
HEAD 请求页面的首部,获取资源的元信息
CONNECT 用于ssl隧道的基于代理的请求
OPTIONS 返回所有可用的方法,常用于跨域
TRACE 追踪 请求–响应的传输路径

3.4HTTP请求访问的完整过程

1.建立连接 2.接收请求 3.处理请求 4访问资源 5构建响应报文 6回复报文 7记录日志

3.5HTTP状态码

HTTP状态码是服务器在处理请求时返回给客户端的数字代码,用于表示请求的处理结果。

HTTP协议状态码分类

状态码首位 范围 含义
1xx 100-101 信息提示,表示请求已被接收,需要进一步处理
2xx 200-206 成功,表示请求已成功处理
3xx 300-305 重定向,表示需要进一步的操作以完成请求
4xx 400-415 客户端错误,表示客户端发送的请求有错误
5xx 500-505 服务器错误,表示服务器在处理请求时发生了错误

HTTP协议常用的状态码

状态码 含义
200 一切正常
301 永久重定向
302 临时重定向
307 浏览器内部重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 请求的资源在服务器上不存在
414 请求URL头部过长
500 服务器内部错误。比如脚本错误,编程语言语法错误
502 无效网关
503 服务器暂时无法处理请求,通常用于服务器维护或过载
504 网关请求超时。程序执行时间过长导致响应超时,例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时。

3.6HTTP连接优化

1)并行连接:并行连接通过同时建立多个连接 ,使得客户端可以并发地发送多个请求,以提高并发性和响应速度。

2)持久连接 :持久连接允许客户端和服务器之间在单个连接上发送多个HTTP请求和响应 ,而不是每个请求都要重新建立连接。

3) 管道化连接:管道化连接是一种在持久连接上发送多个请求而无需等待服务器响应 的机制。

四、HTTP配置

4.1虚拟主机

httpd虚拟主机的作用是通过一个物理服务器来托管多个域名或网站,实现资源共享、个性化配置和多域名指向不同网站的功能,提高服务器资源利用率和降低成本。

4.2基于ip地址

实际操作

[root@node2 conf.d]#vim /etc/httpd/conf.d/test.conf 
<VirtualHost 192.168.91.101:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.91.188:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


[root@localhost extra]#vim /etc/httpd/conf/httpd.conf
Listen 192.168.91.101:80
Listen 192.168.91.188:80

4.3基于端口

[root@node2 conf.d]#vim /etc/httpd/conf.d/test.conf 

<VirtualHost 192.168.91.101:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.91.101:8080>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


[root@localhost extra]#vim /etc/httpd/conf/httpd.conf
Listen 192.168.91.101:80
Listen 192.168.91.188:80

4.4基于域名

[root@node2 conf.d]#vim /etc/httpd/conf.d/test.conf 
<VirtualHost 192.168.91.101:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/kgc"
    ServerName www.kgc.com
    ErrorLog "logs/www.kgc.com_error_log"
    CustomLog "logs/www.kgc.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.91.101:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


mkdir -p /var/www/html/kgc
mkdir -p /var/www/html/accp
echo "<h1>www.kgc.com</h1>" /var/www/html/kgc/index.html
echo "<h1>www.accp.com</h1>" /var/www/html/accp/index.html



去添加host文件

4.5三种工作模式

4.5.1Worker模式 工作线程(Worker)模式适用于资源利用率高的场景

Apache在启动时会创建一组预定义数量的线程池。 每个线程都可以处理多个请求,线程之间共享服务器的内存和资源。 当一个请求到达服务器时,一个空闲的线程将被选择来处理该请求。 线程可能会处理多个请求,通过线程池重用来更高效地处理请求。 这种模式下需要注意线程安全的问题,以确保多个线程间的数据访问不会导致冲突。

4.5.2Event模式

事件驱动(Event MPM)模式适用于高并发场景

在事件驱动模式下,Apache使用I/O多路复用(如epoll或kqueue)来监听多个连接。 当一个连接有数据到达时,Apache将发出事件通知,表示该连接有可读数据。 Apache将事件分发给一个空闲的工作线程来处理请求。 工作线程处理请求的过程通常是非阻塞的,通过事件驱动方式读取数据和发送响应。 这种模式下可以处理大量的并发请求,因为它不需要为每个请求创建一个新的进程或线程。

4.5.3Pre-Fork模式

预产生(Pre-Fork)模式适用于稳定性要求高的场景

Apache在启动时会创建一组预定义数量的子进程(称为工作进程)。 每个工作进程都是独立的,有自己的内存空间和资源。 当一个请求到达服务器时,主进程选择一个空闲的工作进程来接受该请求。 选中的工作进程处理该请求,生成响应并将其发送回客户端。 这种模式下每个工作进程只能处理一个请求,处理完请求后会继续等待下一个请求。

五、Cookie和Session

Cookie和Session用于解决http协议无状态。

5.1Cookie

Cookie是服务器在用户的浏览器中存储的小型文本文件。当用户访问一个网站时,服务器可以通过HTTP响应的Set-Cookie标头将一个或多个Cookie发送给浏览器。浏览器会将这些Cookie存储在用户的计算机上,并在以后的请求中将它们发送回服务器。

每个Cookie都包括一个名称、一个值和一些可选的属性,如过期时间、域名、路径等。服务器可以使用Cookie来存储用户的偏好设置、会话标识符、购物车数据等。浏览器会在每次请求中自动发送与特定域名相关联的Cookie,使得服务器能够识别用户。

5.2Session

Session是在服务器端存储用户状态的一种机制。当用户首次访问一个网站时,服务器会为该用户创建一个唯一的会话标识符(Session ID)。这个标识符通常被存储在Cookie中,但也可以通过其他方式(如URL参数)进行传递。

服务器使用Session来存储用户信息和其他相关数据。在每个请求中,浏览器会将Session ID作为Cookie发送给服务器,使得服务器能够识别并恢复与该用户相关联的会话数据。Session数据通常存储在服务器的内存或持久化存储中。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐