1 .简介
Web服务器工作原理
HTTP协议基于TCP协议上,是一个应用层协议,用于用户代理和Web服务器进行通信。Web服务器通常采用一问一答的方式进行工作:
在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识URI,指明动作类型(GET/POST/DELETE/PUT...)
用户代理解析用户输入URI并从中获取目标域名,交由DNS服务器解析。如果URI中指定某IP地址,这无需这步。
如果与服务器的会话还没建立,此时先建立TCP连接,并完成HTTP协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等)。
用户代理把请求内容封装成HTTP数据包向服务器发送。
服务器接收到资源请求并以之前协商好的方式解包并处理。
服务器请求的资源封装成HTTP数据包并返回给用户代理。
Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。
HTTP概念
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出。
HTTP是基于B/S架构进行通信的,其客户端的实现程序主要是Web浏览器,例如Firefox、InternetExplorer、Google chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了
HTTP发展阶段
0.9阶段
适用于各种数据信息的简洁快速传输,是一个交换信息的无序协议,仅仅限于文本传输。
1.X阶段
支持音频和视频的传输。
2.0阶段
支持动态页面
HTTP工作原理
HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
核心功能
核心功能分为 基础功能 和 高级功能 两大类。
1. 基础功能
1.1 通信协议 & 通信格式
在 Go 项目开发中,有 HTTP + JSON 和 gRPC + Protobuf 两种组合可选。
1.2 路由匹配
根据 HTTP 方法,请求路径 匹配到处理这个请求的函数,最终由该函数进行 参数解析、参数校验、逻辑处理,返回结果。
1.3路由分组
对于一个系统,可能会有多个 API 接口,API 接口随着需求的更新迭代,可能会有多个版本,为了便于管理,需要对路由进行分组。
1.4 一进程多服务
有时候,需要在一个服务进程中,同时开启 HTTP 服务的 80 端口 和 HTTPS 的 443 端口。
这样我们就可以做到:1. 对内的服务,访问 80 端口,简化服务访问复杂度;2. 对外的服务,访问更为安全的 HTTPS 服务。
因为,没必要为相同功能启动多个服务进程。
2. 高级功能
2.1 中间件
在进行 HTTP 请求时,经常需要针对每一次请求都设置一些通用的操作。
比如添加 Header、添加 RequestID、统计请求次数等。
2.2 认证
为了保证系统安全,对于每一个请求,都需要进行认证。通用的两种认证方式:
1. 基于用户名和密码
2. 基于 Token
认证通过后,就可以继续处理请求了。
2.3 RequestID
为了方便定位和跟踪某一次请求,需要支持 RequestID。
定位和跟踪 RequestID 主要是为了 排障。
2.4 跨域
在前后端分离的架构中,前端访问地址 和 后端访问地址往往是不同的,浏览器为了安全,会针对这种情况设置跨域请求,所以 Web 服务需要能够处理浏览器的跨域请求。
2.学会安装Web服务设置
认识网站目录
学会修改配置文件(部署首页 index.html)
# yum -y install httpd #安装httpd服务
- 启动httpd服务
- # systemctl start httpd
检查httpd是否启动和所使用的端口号
在linux服务器上查看网络ip地址
在客户机上打开浏览器,输入刚刚看到的IP地址
正常打开会是默认的linux服务器测试页面,由于我之前配置过,是已经配置好的页面,我就不展示了
认识网站主目录/var/www/html
首先关闭防火墙,
关闭防火墙
查看防火墙状态
systemctl status firewalld.service
临时关闭防火墙(重启电脑会重新启动)
systemctl stop firewalld
关闭selinux
查看selinux状态
输入getenforce
临时关闭selinux
接下来简单编辑下网站的页面
- # cd /var/www/html #切换进入网站主目录
- # vim index.html #打开文本编辑器并创建index.html的文件
- <html>
- <title>想要显示网站名字</title>
- <body>
- 想要显示的文字内容
- </body>
- </html>