快速学会Linux的WEB服务

一.用户常用关于WEB的信息

       什么是WWW

        www是world wide web的缩写,及万维网,也就是全球信息广播的意思

        通常说的上网就是使用www来查询用户所需要的信息。

        www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet传递到世界各处去。

        当你连接www网站,该网站会提供一些数据,客户端要使用可以解析这些数据的软件来处理,那就是浏览器

网址

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

        URN:Uniform Resource Naming,统一资源命名,P2P下载使用的磁力链接是URN的一种实现

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

        两者区别:而URL提供查找该事物的方法。URN仅用于命名,而不指定地址

URL组成

        URL组成机构如下:

                <scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

每部分的定义为:

二.HTTP简介

什么是HTTP

        HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)

        简单来说http就是从服务器传输超文本(html)到本地浏览器的传输协议

        HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送请求(Request)Web服务端根据接收到的请求数据后,向客户端发送响应信息(Response)

        面向开发者的 Web 技术 | MDN

HTTP工作机制

        一次http事务包括:

        http请求:http request

        http响应: http response

        Web资源: web resource

        一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web页面”通常并不是单个资源,而是一组资源的集合

        资源类型:

                静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同

                常见文件后缀:.html,.txt,.jpg,.js,.css,mp3,avi

                动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同

                常见文件后缀:.php,jsp,asp

WEB中常用的语言介绍

        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">欢迎</h1><p><a href=http://www.xianoupeng.com>欧鹏教育</a>欢迎你</p></body></html>

  css 层叠样式表 表述网站的风格

html网页主体---<html><head><meta http-equiv=Content-Type content="text/htm1;charset=utf-8"><link rel="stylesheet" type="text/css" href="mystyle.css" /></head><body><h1>这是 heading 1</h1><p>这是一段普通的段落。请注意,该段落的文本是红色的。在body选择器中定义了本页面中的默认文本颜色。</p><p class="ex">该段落定义了class="ex"。该段落中的文本是蓝色的。</p></body></html>css文件--body {color:red }h1 {color:yellow }p.ex {color:blue }

    js实现html和css实现不了的功能比如动画效果

<!DOCTYPE html><html><head><meta http-equiv=Content-Type content="text/html;charset=utf-8"></head><body><h2>我的第一个JavaScript</h2><button type="button"onclick="document.getElementById('demo').innerHTML = Date()">点击这里来显示日期和时间</button><p id="demo"></p></body></htm1>

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

        它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理

        为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。

        其主要功能是让服务器将它们发送的多媒体数据的类型告诉浏览器

        服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件

        MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记

        MIME格式: type/subtype 文件类型后缀(html txt jpg png... ...)

HTTP访问请求完整过程

                 1)建立连接:
                         
TCP的3次握手建立链接,向服务器发送http请求,服务器拒绝或允许

                 2)接受请求
                       
  接受客户端请求报文对某个资源的一次请求过程web响应访问模型

        a.单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应

        b.多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求

        c.复用I/O结构:启动一个进程,同时响应N个连接请求

        d.复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

        3)处理请求:
         服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理常用请求Method:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

        4)访问资源:
        服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源

        5)构建响应报文:
        一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体

        响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:

                描述了响应主体MIME类型的Content-Type首部

                描述了响应主体长度的Content-Length

        实际报文的主体内容

                (1)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径

                (2)MIME类型:Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来

        6)发送响应报文
        Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束

HTTP协议报文头部结构

        1)请求报文

  求情报文由三部分组成即:开始行、首部行、是体主体

                          开始行:请求方法 url 版本 CRLF

                          首部行通常用键值表示

                          空格

                          实体主题数据,一般在post动作中可以提看到

                          开始行中的请求方法:

        2)响应报文

        求情报文由三部分组成即:开始行、首部行、是体主体

        开始行:http版本 状态码 短语 CRLF

        首部行通常用键值表示

        空格

        实体主题数据,即获取内容

状态代码

        状态码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

  常见状态代码、状态描述的说明如下:

三.WEB服务的配置详解

WEB服务的常用种类

        Apache

        Nginx

        openresty

        大厂自研

Nginx的安装
        开源版本的Nginx官网:http://nginx.org

        Nginx在安装的过程中可以选择源码安装也可以选择使用软件包安装

        源码安装下载相应的源码压缩包解压后编译完成安装

        软件安装包可以使用rpm或者apt命令进行安装,也可以使用dnf通过软件仓库安装

        以软件仓库安装为例:

        配置软件仓库

vim /etc/yum.repos.d/nginx.repo[nginx]name=nginxbaseurl=http://nginx.org/packages/rhel/9/x86_64gpgcheck=0

           执行安装命令

 dnf install nginx –y

          启动服务并启用服务  

systemctl enable --now nginx.servicefirewall-cmd --permanent --add-service=httpfirewall-cmd –reload

    注意:在安装nginx之前还要配置好系统的软件仓库,nginx的安装需要通过系统软件仓库来解决依赖性

Nginx涉及到的文件

        相关配置文件的作用

        主配置目录:/etc/nginx

        相关配置文件:/etc/nginx/

├── conf.d                                #子配置目录│ ├── default.conf                   #子配置文件├── fastcgi_params                 #fastcgi变量文件,用于识别php├── mime.types                      #媒体类型文件├── nginx.conf                        #主配置文件├── scgi_params                     #scgi变量文件,用于识别perl└── uwsgi_params                  #uwsgi变量文件,用于识别python/var/log/nginx                         #日志文件

  nginx配置文件内容详解

        1)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; #可接受最大连接数}
          2)http模块配置
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; #指定子配置文件}
         3)子配置文件
/etc/nginx/conf.d/default.confserver {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配置

        1)nginx虚拟主机
                默认情况下nginx只能发布一个站点

                如果要发布多个站点需要搭建多台nginx来满足,如果这样会浪费太多资源

                为解决上述问题,启用nginx的虚拟主机即可

                虚拟主机有两种模式,基于IP或者基于域名

        2)基于IP的虚拟主机

                 ip addr add 172.25.254.111/24 dev ens160ip addr add 172.25.254.222/24 dev ens160mkdir -p /usr/share/nginx/vhostroot/{111,222}/htmlecho 172.25.254.111 > /usr/share/nginx/vhostroot/111/html/index.htmlecho 172.25.254.222 > /usr/share/nginx/vhostroot/222/html/index.htmlvim vhost_ip.confserver{listen 172.25.254.111:80;location / {root /var/www/virtualdir/111/html;index index.html index.htm}}server{listen 172.25.254.222:80;location / {root /var/www/virtualdir/222/html;index index.html index.htm}}curl 172.25.254.222:8080172.25.254.222curl 172.25.254.111172.25.254.111

       3)基于域名的虚拟主机

mkdir -p /usr/share/nginx/vhostroot/{bbs,news}/htmlecho news.easylee.org > /usr/share/nginx/vhostroot/news/html/index.htmlecho bbs.easylee.org > /usr/share/nginx/vhostroot/bbs/html/index.htmlvim vhost_name.confserver {listen 80;server_name bbs.easylee.org;location / {root /usr/share/nginx/vhostroot/bbs/html;index index.html index.htm;}}server {listen 80;server_name news.easylee.org;location / {root /usr/share/nginx/vhostroot/bbs/html;index index.html index.htm;}}

          4)测试

[root@localhost conf.d]# curl news.easylee.orgnews.easylee.org[root@localhost conf.d]# curl bbs.easylee.orgnews.easylee.org

注意:在测试时因为虚拟主机是基于域名的,执行测试命令的主机需要做本地解析

vim /etc/hosts172.25.254.100 bbs.easylee.org news.easylee.org

web服务器的访问控制

        1)基于IP的访问控制

mkdir -p /usr/share/nginx/vhostroot/bbs/html/adminecho admin page > /usr/share/nginx/vhostroot/bbs/html/admin/index.htmlvim vhost_name.confserver {listen 80;root /usr/share/nginx/vhostroot/bbs/html;index index.html index.htm;server_name bbs.easylee.org;location / {}location /admin/ {allow 172.25.254.100;deny all;}}

    2)基于认证的访问控制

         建立认证文件按

yum install httpd-tools-2.4.57-5.el9.x86_64 -yhtpasswd -cm /etc/nginx/.htpasswd adminNew password:Re-type new password:Adding password for user admin

注意:htpasswd -c 表示新建认证文件,无论认证文件存不存在

        当认证文件存在时加-c参数会把认证文件之前的内容全部清空

        设置认证访问控制

vim vhost_name.confserver {listen 80;root /usr/share/nginx/vhostroot/bbs/html;index index.html index.htm;server_name bbs.easylee.org;location / {}location /admin/ {auth_basic on;auth_basic_user_file /etc/nginx/.htpasswd;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows玩游戏的时候,一按字符键就显示桌面

最近打赛伯朋克 2077 的时候&#xff0c;不小心按错键了&#xff0c;导致一按字符键就显示桌面。如下&#xff1a; 一开始我以为是输入法的问题&#xff08;相信打游戏的人都知道输入法和奔跑键冲突的时候有多烦&#xff09;&#xff0c;但是后来解决半天发现并不是。在网上搜…

【测试开发】概念篇 - 从理解需求到认识常见开发、测试模型

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

核函数(Kernel function)

核函数 核函数在GPU上进行并行执行 注意: 限定词__global__修饰 [双下划线]返回值必须是void 形式: _global_ void kernel_function( argument arg){ ​ printf(“hello world from the GPU\n”); } void __global__kernel_function( argument arg){ ​ printf(“hello worl…

数据结构与算法:区间dp

前言 区间dp也是动态规划里很重要的一部分。 一、内容 区间dp的根本原理就是把大范围问题分解成若干小范围的问题去求解。一般来讲,常见的用法有对于两侧端点去展开可能性和对于范围上的划分点去展开可能性。 二、题目 1.让字符串成为回文串的最少插入次数 class Soluti…

AI Agent 入门指南:从 LLM 到智能体

AI. AI. AI. 最近耳朵里是不是总是被这些词轰炸&#xff1f;特别是“Agent”、“AI Agent”、“智能体”、“Agentic”…… 感觉一夜之间&#xff0c;AI 就从我们熟悉的聊天框里蹦出来&#xff0c;要拥有“独立思考”和“自主行动”的能力了&#xff1f; 说实话&#xff0c;一…

开启docker中mysql的binlog日志

1.登陆docker服务器,输入docker ps查看服务: 2.进入mysql服务 进入到mysql的服务容器后,输入mysql -u*** -p***登陆 mysql 客户端查看是否开启binlog 输入 : show variables like log_bin; 3.输入quit退出mysql客户端 4.之后在docker的mysql服务容器里查询mysql的配置文件所在…

Kotlin 中 List 和 MutableList 的区别

在 Kotlin 中&#xff0c;List 和 MutableList 是两种不同的集合接口&#xff0c;核心区别在于可变性。 Kotlin 集合框架的重要设计原则&#xff1a;通过接口分离只读&#xff08;read - only&#xff09;和可变&#xff08;mutable&#xff09;操作&#xff0c;以提高代码的安…

【能力比对】K8S数据平台VS数据平台

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨AllData数据中台官方平台&…

Fastjson 从多层级的JSON数据中获取特定字段的值

使用 Fastjson 的 JSONPath.eval 可以通过 JSONPath 表达式直接定位多层级 JSON 中的目标字段&#xff0c;避免逐层调用 getJSONObject() 的繁琐操作。以下是具体实现方法和示例&#xff1a; 核心思路 通过 JSONPath.eval 方法&#xff0c;传入 JSON 对象&#xff08;或 JSON…

端口安全基本配置

1.top图 2.交换机配置 交换机swa <SWA> system-view [SWA] vlan batch 10 20[SWA] interface GigabitEthernet0/0/1 [SWA-GigabitEthernet0/0/1] port link-type trunk [SWA-GigabitEthernet0/0/1] port trunk allow-pass vlan 10[SWA] interface GigabitEthernet0/0/2 …

hadoop集群建立

建立Hadoop集群的步骤指南 建立Hadoop集群需要系统规划和多个步骤的配置。以下是详细的建立流程&#xff1a; 一、前期准备 硬件需求 多台服务器(至少3台&#xff0c;1主2从) 每台建议配置&#xff1a;至少4核CPU&#xff0c;8GB内存&#xff0c;100GB硬盘 稳定的网络连接(…

从零开始学java--集合类(2)

集合类 目录 集合类 Queue 队列的使用&#xff1a; 双端队列&#xff08;Deque&#xff09; Map和Set 概念&#xff1a; 模型&#xff1a; Map 常见方法说明&#xff1a; 注意&#xff1a; TreeMap和HashMap的区别&#xff1a; Set 常见方法说明&#xff1a; 注…

【HarmonyOS 5】鸿蒙发展历程

【HarmonyOS 5】鸿蒙发展历程 一、鸿蒙 HarmonyOS 版本年代记 鸿蒙 1.0&#xff1a; 2019 年 8 月 9 日&#xff0c;华为在开发者大会上正式发布鸿蒙 1.0 系统&#xff0c;这一版本首次应用于华为荣耀智慧屏产品中&#xff0c;标志着华为正式进军操作系统领域。该版本初步展现…

SpringBoot教学管理平台源码设计开发

概述 基于SpringBoot框架开发的​​教学管理平台​​完整项目&#xff0c;帮助开发者快速搭建在线教育平台。该系统包含学生端、教师端和管理后台&#xff0c;实现了课程管理、随堂测试、作业提交等核心功能&#xff0c;是学习SpringBoot开发的优质案例。 主要内容 1. 系统架…

人工智能端侧热度再起

在科技浪潮汹涌澎湃的当下,人工智能端侧正悄然掀起新一轮的热度风暴。曾经,人工智能更多停留在概念层面,仿佛是遥不可及的未来幻想;而后,它逐渐落地,在特定领域崭露头角,却也显得有些曲高和寡。但如今,人工智能端侧正以前所未有的态势融入我们的生活,从智能手机的语音…

相同的数(简单)

深度优先搜索 如果两个二叉树都为空&#xff0c;则两个二叉树相同。如果两个二叉树中有且只有一个为空&#xff0c;则两个二叉树一定不相同。 如果两个二叉树都不为空&#xff0c;那么首先判断它们的根节点的值是否相同&#xff0c;若不相同则两个二叉树一定不同&#xff0c;…

网络安全等级保护有关工作事项[2025]

公安部发布公网安〔2025〕1846号文件&#xff0c;关于对网络安全等级保护有关共工作事项的进一步说明 一、备案相关问题 1、如何执行系统备案动态更新工作? 全面梳理与重新填报&#xff1a; 答复&#xff1a;运营者需**全面梳理已备案系统**的情况&#xff0c;对于已完成定…

c++类【发展】

类的静态成员&#xff08;用static声明的成员&#xff09;,在声明之外用例单独的语句进行初始化&#xff0c;初始化时&#xff0c;不再需要用static进行限定。在方法文件中初始化。以防重复。 特殊成员函数 复制构造函数&#xff1a; 当使用一个对象来初始化另一个对象…

宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座

引言&#xff1a;当动力电池巨头瞄准数字孪生安全 2025年5月6日&#xff0c;金融界披露宁德时代未来能源&#xff08;上海&#xff09;研究院与母公司宁德时代新能源科技股份有限公司联合申请的一项关键专利——“身份验证方法、系统、电子设备及存储介质”。这项技术将区块链…

cesium之自定义地图与地图叠加

在appvue中,cesium支持更换不同的地图资源,代码如下 <template><div id"cesiumContainer" ref"cesiumContainer"></div> </template><script setup> import * as Cesium from cesium; import "./Widgets/widgets.css&…