努力一口气学完Linux基础的第六章,今天学的是:
web服务器的部署和优化
———————————————————————————————————————————
目录
2.2.2. MIME(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展
一、Web基础知识
1.1 什么是WWW
WWW(World Wide Web,万维网)是全球信息广播的系统,允许用户通过网络查询和访问所需的各种信息。WWW结合了文字、图形、影像、声音等多种媒体形式,并通过超链接的方式,将信息通过互联网传递到世界各地。当我们访问网站时,浏览器会根据WWW协议从服务器获取数据,展示网页内容。
1.2 网址的结构
网址(URI)是统一资源标识符,分为URL和URN两种形式:
- URN(Uniform Resource Name,统一资源命名):仅用于资源命名,无法定位资源的具体位置,例如P2P下载的磁力链接。
- URL(Uniform Resource Locator,统一资源定位符):用于描述服务器上某一特定资源的位置。
URL组成结构:
- <scheme>:协议方案,指定访问资源时使用的协议,如http、https。
- <user>:用户名,用于身份验证。
- <password>:密码,用于身份验证。
- <host>:主机,服务器的域名或IP地址。
- <port>:端口,服务器监听的端口号。
- <path>:路径,服务器上资源的本地路径。
- <params>:参数,指定输入的参数,以名/值对的形式传递。
- <query>:查询,传递额外的查询参数,多个查询用&分隔。
- <frag>:片段,指定资源的某一部分,通常是页面的锚点。
二、HTTP简介
2.1 什么是HTTP
HTTP(Hyper Text Transfer Protocol,超文本传输协议)是用于从服务器传输超文本数据(如HTML页面)到客户端浏览器的协议。HTTP协议采用B/S(浏览器/服务器)架构,客户端通过HTTP协议向Web服务器发送请求,服务器处理请求后返回响应。
2.2 HTTP工作机制
一个HTTP事务包括请求和响应:
- HTTP请求:客户端向服务器发送请求数据。
- HTTP响应:服务器根据请求返回响应数据。
Web资源是构成网页的多个文件,一个页面通常由多个资源组成,每个资源需要单独请求。Web资源包括:
- 静态资源:无需服务器处理,客户端和服务器的文件内容相同,如HTML、图片、CSS文件等。
- 动态资源:由服务器处理后返回的内容,客户端和服务器的文件内容不同,如PHP、JSP、ASP等。
2.2.1 常用的Web开发语言
- HTML(超文本标记语言):用于构建网页的基本结构。
- CSS(层叠样式表):用于定义网页的样式和布局。
- JavaScript:用于实现网页的交互功能,例如动画效果、数据验证等。
示例:HTML代码
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>HTML</title> </head> <body> <img src="http://www.xianoupeng.com/uploadfile/2019/0424/20190424115929686.jpg"> <h1 style="color:red">66</h1> <p><a href="http://www.xianoupeng.com">阿巴阿巴</a>11</p> </body> </html>
2.2.2. MIME(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展
MIME最初设计的目的是为了在发送电子邮件时附加多媒体数据,使得邮件客户端能够根据不同数据类型进行处理。为了支持多媒体数据类型,HTTP协议中也采用了MIME类型,通过在文档之前添加MIME数据类型信息来标识数据类型。MIME的主要功能:
- 让服务器将发送的多媒体数据的类型告知浏览器。
- 服务器在数据传输中将MIME标志符包含在响应头部,告知浏览器使用适当的插件或方法来读取相关文件。
MIME类型通常在HTTP响应报文的响应头部中,并且以文本格式标记。
常见的文件类型后缀包括 .html、.txt、.jpg、.png 等。
2.3. HTTP访问请求完整过程
- 建立连接:
使用TCP的三次握手过程建立连接,向服务器发送HTTP请求,服务器决定是否接受连接。
- 接受请求:
服务器接收客户端发送的请求报文,具体请求某个资源。
Web服务器处理请求的方式:
- 单进程I/O模型:每次启动一个进程处理一个请求,多个请求串行响应。
- 多进程I/O模型:启动多个进程并行处理不同的请求。
- 复用I/O结构:一个进程同时处理多个请求。
- 复用的多进程I/O模型:多个进程,每个进程同时处理多个请求。
处理请求:服务器解析请求报文,提取资源、请求方法、请求头及可选主体等信息,然后根据请求类型进行处理。
常见的HTTP请求方法:
- GET:请求指定页面信息,并返回实体主体。
- POST:向指定资源提交数据,可能生成新资源或修改已有资源。
- HEAD:类似GET,但响应中没有主体内容。
- PUT:向服务器传送数据,替换指定文档内容。
- DELETE:请求服务器删除指定页面。
- TRACE:回显服务器收到的请求,用于测试和诊断。
- OPTIONS:允许客户端查看服务器的性能。
访问资源:Web服务器根据请求获取并返回所请求的资源,资源可能是静态的或动态生成的。
构建响应报文:一旦Web服务器确定了资源,就执行请求方法中定义的动作,并构建响应报文。响应报文包括:
- 响应状态码:表示请求的处理结果。
- 响应头部:包括如Content-Type、Content-Length等信息。
- 响应主体(如果有):实际的数据或页面内容。
发送响应报文:
- 服务器通过TCP连接将响应报文发送给客户端。在发送完成后:
- 非持久连接:发送完响应报文后,服务器关闭连接。
- 持久连接:连接保持打开状态,服务器需要正确处理Content-Length,以确保客户端知道响应结束的标志。
2.4. HTTP协议报文头部结构
2.4.1. 请求报文的组成
请求报文由三部分组成:
- 开始行:包括请求方法、URL和HTTP版本。
示例:GET /index.html HTTP/1.1
- 请求头:用键值对形式表示额外信息。
示例:Host: www.example.com
- 实体主体(可选):一般在POST请求中会包含提交的数据。
常见的请求方法:
- GET:请求指定资源,并返回实体主体。
- POST:提交数据请求,数据包含在请求中。
- HEAD:与GET类似,但不返回主体内容。
- PUT:上传数据,替代服务器上的指定资源。
- DELETE:删除服务器上的指定资源。
- OPTIONS:查看服务器支持的HTTP方法。
- TRACE:回显收到的请求,用于调试。
2.4.2. 响应报文的组成
响应报文由三部分组成:
- 开始行:包括HTTP版本、状态码和状态短语。
示例:HTTP/1.1 200 OK
- 响应头:描述响应的元数据。
示例:Content-Type: text/html
- 实体主体(可选):实际返回的资源内容。
2.5. 状态码
状态码由三位数字组成,第一个数字表示响应的类别:
- 1xx:指示信息,表示请求已接收,继续处理。
- 2xx:成功,表示请求已被成功处理。
- 3xx:重定向,要求客户端执行进一步操作。
- 4xx:客户端错误,表示请求有错误或无法处理。
- 5xx:服务器错误,表示服务器未能处理有效请求。
常见状态码:
- 200 OK:请求成功,返回所请求的资源。
- 400 Bad Request:客户端请求有语法错误,无法理解。
- 401 Unauthorized:请求未经授权,需要WWW-Authenticate头部。
- 403 Forbidden:服务器拒绝提供服务。
- 404 Not Found:请求的资源不存在。
- 500 Internal Server Error:服务器发生内部错误。
- 503 Service Unavailable:服务器当前无法处理请求,可能会恢复正常。
三、Web服务配置详解
3.1 Web服务的常用种类
在网络应用中,Web服务器的角色至关重要,它们为浏览器等客户端提供资源和处理请求。常见的Web服务种类有:1.Apache:
- 是最常用的开源Web服务器,支持多种操作系统和协议。
- 配置灵活,模块化设计,支持多种功能(如PHP、SSL等)。
- 对高并发请求的处理相对较慢,但可以通过配置优化。
2.Nginx:
- 轻量级、高性能的Web服务器,特别适用于高并发和反向代理场景。
- 配置简单,能够作为负载均衡、反向代理、Web服务器等多种角色使用。
3.OpenResty:
- 基于Nginx的一个高性能Web平台,扩展了Nginx的功能,可以执行Lua脚本,实现高效的动态Web应用处理。
- 适用于需要动态生成内容的应用程序。
4.大厂自研:
- 很多大厂(如阿里、腾讯等)也会根据自身的业务需求,开发自研的Web服务系统,通常具有高性能、扩展性等特点。
- 这些服务器往往会加入定制化的功能,适应特定的技术栈和需求。
3.2 Nginx的安装
Nginx官网:
开源版本的Nginx可以通过官网(nginx.org)下载。安装方式有两种,分别是源码安装和软件包安装。
1. 源码安装:
- 下载相应版本的源码压缩包
- 解压并编译安装
2. 使用软件包安装:
可以使用系统的软件包管理工具安装Nginx,常见的有rpm(RedHat/CentOS)和apt(Debian/Ubuntu)命令。这里我们以 软件仓库安装 为例。
1. 配置软件仓库:在系统中配置Nginx的软件仓库,确保可以通过系统的包管理工具安装Nginx。
例如,在基于RHEL/CentOS系统中配置仓库:# 编辑nginx.repo文件 vim /etc/yum.repos.d/nginx.repo # 添加如下内容: [nginx] name=nginx baseurl=http://nginx.org/packages/rhel/9/x86_64 gpgcheck=0
![]()
2. 安装Nginx:
dnf install nginx -y
使用dnf(RHEL/CentOS 8及以上)命令来安装Nginx。
3. 启动服务并启用服务:
安装完成后,启用Nginx服务,确保系统启动时自动启动Nginx。
# 启动Nginx systemctl enable --now nginx.service
![]()
# 配置防火墙开放http服务 firewall-cmd --permanent --add-service=http # 重新加载防火墙 firewall-cmd --reload
3.3 Nginx涉及到的文件
Nginx的配置和日志管理非常重要。以下是一些常见的文件和目录:
主配置目录:/etc/nginx 相关配置文件:/etc/nginx/ /var/log/nginx #日志文件
- 主配置目录:
/etc/nginx/ 这是Nginx配置文件所在的目录,通常包含了多个重要的配置文件。
- 配置文件:
/etc/nginx/nginx.conf 主要的Nginx配置文件,包含了全局设置、工作进程的设置以及HTTP服务配置。
- 日志文件目录:
/var/log/nginx/ 存放Nginx的访问日志和错误日志。通过查看这些日志可以帮助管理员进行问题排查和性能监控。
3.4.nginx配置文件内容
user nginx; #nginx程序运行用户 worker_processes auto; #开启work进程数量 error_log /var/log/nginx/error.log notice; #错误日志 pid /var/run/nginx.pid; #pid文件 events { worker_connections 1024; #可接受最大连接数 } http { include /etc/nginx/mime.types; #可解析的静态资源类型 default_type application/octet-stream; #用来配置Nginx响应前端请求默认的MIME类型 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; #访问日志 sendfile on; # Nginx服务器是否使用sendfile()传输文件 #tcp_nopush on; # 当包累计到一定大小后就发送,默认0.2s一次 keepalive_timeout 65; # 长连接超时时间 #gzip on; #可以使网站的css、js 、xml、html 等静态资源在传输时进行压缩 include /etc/nginx/conf.d/*.conf; #指定子配置文件 }
子配置文件:
/etc/nginx/conf.d/default.conf server { listen 80; #监听端口 server_name localhost; #服务器的名字 location / { root /usr/share/nginx/html; #默认发布目录 index index.html index.htm; #默认发布文件 } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; #访问出错呈现错误页面 location = /50x.html { root /usr/share/nginx/html; } }
nginx显示文本:
3.5 web服务器的访问控制
3.5.1 基于IP的访问控制
3.5.2 基于认证的访问控制
![]()
3.5.3 基于域名访问IP来访问多个网站
--------------------------------------------------------------------------------------------------------------------------------
以上就是 Linux基础第六章web服务器的部署和优化 的全部内容了。