一口气学完Linux基础(六)——web服务器的部署和优化

努力一口气学完Linux基础的第六章,今天学的是:

                                                                                                               web服务器的部署和优化

———————————————————————————————————————————

目录

一、Web基础知识

1.1 什么是WWW

1.2 网址的结构

二、HTTP简介

2.1 什么是HTTP

2.2 HTTP工作机制

2.2.1 常用的Web开发语言

2.2.2. MIME(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展

MIME的主要功能:

2.3. HTTP访问请求完整过程

Web服务器处理请求的方式:

处理请求:

访问资源:

构建响应报文:

发送响应报文:

2.4. HTTP协议报文头部结构

2.4.1. 请求报文的组成

常见的请求方法:

2.4.2. 响应报文的组成

2.5. 状态码

常见状态码:

三、Web服务配置详解

3.1 Web服务的常用种类

3.2 Nginx的安装

1. 配置软件仓库:

2. 安装Nginx:

3. 启动服务并启用服务:

3.3 Nginx涉及到的文件

3.4.nginx配置文件内容

子配置文件:

nginx显示文本:

3.5 web服务器的访问控制

3.5.1 基于IP的访问控制

3.5.2 基于认证的访问控制

3.5.3 基于域名访问IP来访问多个网站



一、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. 源码安装:

  1. 下载相应版本的源码压缩包
  2. 解压并编译安装

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服务器的部署和优化 的全部内容了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值