一、Web基础概念和常识
Web:为用户提供的⼀种在互联网上浏览信息的服务,Web 服务是动态的、可交互的、跨平台的和图形化的。
Web 服务为⽤户提供各种互联网服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习等等内容。
Web 应⽤开发也经过了及代技术的不断发展,目前 Web 开发依然是最重要的开发内容之一。Web 基础的技术包括超⽂本标记语言(HTML)和 HTTP 协议,HTML 是一种呈现数据的方式(给人看的),而 HTTP 则是一组通信的标准(语法、语义、时许),可以简单的理解为 HTTP 携HTML。
1. web 应用:网站(广义上的PC,手机app)
2. 浏览器(Browser):也称⽤户代理,web客户端,主要有IE、
Edge、Chrome、Firefox、腾讯浏览器,360浏览器等。
3. web服务器(web server):也称HTTP服务器(HTTP
server),主要有 Nginx、Apache、Tomcat 等。
二、HTTP和HTTPS协议
1.HTTP协议
HTTP协议是超文本传输协议的缩写,英文是Hyper TextTransfer Protocol。它是从WEB服务器传输超文本标记语言(HTML) 到本地浏览器的传送协议。
1.HTTP原理
HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML文件,图片文件查询结果等。HTTP协议一般用于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即web服务器发送所有请求,web服务器收到客户端请求后进行响应。
2.HTTP特点
1. http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
3. 灵活:HTTP 允许传输任意类型的数据对象。传输的类型由Content-Type 加以标记。除开可以响应字符串之外,还可以上传和下载二进制文件。
4. 无连接:限制每次连接只处理⼀个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录 http 状态
的技术,一个叫做 Cookie,一个叫做 Session。
5. 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前⾯的信息,则必须重传。
3.URI 和 URL 的区别
(1)HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。
URI:Uniform Resource Identifier 统一资源标识符
URL:Uniform Resource Location 统一资源定位符
(2)URI 是用来标识⼀个具体的资源的,我们可以通过 URI 知道⼀个资源是什么,使用它就能够唯一地标记互联网上资源。
(3)URL 则是用来定位具体的资源的,标识了⼀一具体的资源位置。互联网上的每个文件都有一个唯一的。
(4)URL,也就是我们俗称的⽹址,它实际上是 URI 的⼀个子集。
(5)URI 不仅包括 URL,还包括 URN(统一资源名称),它们之间的关系如下:
2.https协议
HTTP一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS应运而生。
HTTPS 的全称为(HyperTextTransferProtocoloverSecureSocketLayer),HTTPS 和 HTTP 有很大的不同在于 HTTPS 是以安全为目标的。
HTTP通道,在HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说HTTPS=HTTP+SSL。
HTTPS 安全通信的四大原则
(1)机密性,就是对数据的加密,在传输数据的过程当中,如果被人劫持了数据,那么这个加密的数据对方不能轻易获得。
(2)完整性,是指数据在发送到接收的过程当中没有被篡改,从而接收到的数据是一个完整的数据内容。
(3)身份认证,数据传输的过程当中对于身份的验证,确认对方是传送数据过来的⼈。可以解决冒充这样的风险。
(4)不可否认性,不能否认已经发生的行为。
三、Apache服务
1.apache概念
最早的 web 服务程序,基于 http 协议提供网页浏览服务。
1.特点
模块化设置、开放源代码、跨平台应用、支持多种 web 编程语言、运行稳定。
2.工作模式
(1)Prefork:使⽤进程处理请求,在该模式中比较消耗内存,但稳定性高,如某个进程出现题,不会影响其他请求。
(2)Worker:属于多进程模式,每个进程生成多个进程;在该模式下消耗的资源比较小,适合高并发请求,但稳定性没有 Prefork 模式稳定。
(3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模式下可以解决keepalive 长连接时占用线程资源导致浪费的问题。
(4)keep-alive 长连接:TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。实现长连接要客户端和服务端都支持长连接。
2.搭建apache服务器
1.安装并设置防火墙
[root@localhost ~]# yum -y install httpd #安装服务
[root@localhost ~]# rpm -ql httpd #查看配置文件
2.apache配置文件
查看配置文件:
[root@http ~]# ls /etc/httpd/
conf conf.d conf.modules.d logs modules run
修改配置文件:
[root@http ~]# vim /etc/httpd/conf/httpd.conf
<!doctype html>
<html><head><meta charset="utf-8"><title>正方形</title><style>div{background-color:red;width:120px;height:120px;}</style></head><body><div>正方形</div> </body>
</html>
启动服务:
[root@http ~]# systemctl start httpd.service
检查防火墙状态:查看防火墙是否启⽤,若启用则设置apache服务可通行规则。
[root@server2 ~]# systemctl status firewalld.service
设置防火墙:
[root@http ~]# firewall-cmd --zone=public --add-service=http
success
重载防火墙规则:
[root@http ~]# firewall-cmd --reload
success
查看当前区域下的防火墙所有规则:
[root@http ~]# firewall-cmd --list-all
浏览器访问不到的情况,打开80端口再进行访问就可以啦。
[root@http ~]# firewall-cmd --add-port=80/tcp
success
3.浏览器访问
四、nginx服务
1.Nginx简介
1.Nginx(engine X):开源、轻量级、高性能的 HTTP 和反向代理服务器,可以代理 HTTP、IMAP/POP3/SMTP 和 TCP/UDP协议。
2.基本特点:占用内存少、并发能力强,采用用C 语言编写,在性能方面有一定保证。
3.反向代理:Nginx 可以用来做负载均衡及反向代理使用,目前使用最多的是负载均衡。
4.与 Nginx 同类的 Web 服务有 Apache、Tomcat 等。
5.官方网站:http://nginx.org/
2、Nginx 服务器特点
(1)模块化设计
Nginx 将模块分为核⼼模块、HTTP 模块、事件模块和邮件模块 四类。每个模块都有特定的职责,从⽽实现了整个 Web 服务器 的功能。
(2)低内存消耗,⾼并发
Nginx 使⽤ epoll and kqueue 作为开发⼯具,能够⽀持最⼤ 50000 个并发连接数的响应;不论是系统资源开销还是 CPU 使 ⽤效率都很优秀。
(3)事件驱动
nginx 采⽤异步⽅式处理请求。
同步:指在发送⽅发出消息后,需要等待接收到接收⽅发回的响 应,或者通过回调函数来接收到对⽅响应信息。
异步:指在发送⽅发出请求后,接收⽅不需要返回消息或者不等 待返回消息,直接提供响应请求机制。
(4)⾼可靠性,master 与 worker 架构
⼀个主进程和多个⼯作进程。⼯作进程是单线程的,且不需要特 殊授权即可运⾏;
master进程:主要⽤来监控worker进程⼯作状态进⾏相应重 启、停⽌等操作。
worker进程:进⾏具体提供服务,接受请求和处理请求。
(5)⽀持热更新配置、⽇志⽂件滚动、平滑升级
/usr/local/nginx/sbin/nginx -s reloadhtml⽬录中的⽂件发上修改之后,不需要nginx服务 可向 master 发送 USR1、QUIT 等信号,⽆需强制停⽌服务即 可完成热更新。
向 master 发送的 USR1,可实现⽇志⽂件滚动。
向 master 发送的 USR2,可实现平滑升级。
(6)丰富的扩展模块
可在编译安装 nginx 时指定拓展模块,例如:nginx-sticky。
module 模块(基于 cookie 来进⾏负载转发)。
3.nginx安装
1.源码下载安装
下载地址: https://nginx.org/download/nginx-1.26.1.tar.gz
[root@nginx ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz
2.安装依赖包
[root@nginx ~]# yum -y install gcc gcc-c++ make lrzsz
[root@nginx ~]# yum -y install openssl-devel pcre-devel
3.解压
[root@nginx ~]# tar -zxvf nginx-1.26.1.tar.gz
4.编译安装
[root@nginx ~]# cd nginx-1.26.1/
[root@nginx nginx-1.26.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
[root@nginx nginx-1.26.1]# make && make install
“configure”,编译安装前的预配置。
--prefix=/usr/local/nginx:指定软件的安装路径,注意不是安装包⽬录,⽽是软件要安装在哪。
--user=nginx:程序⽤户为nginx。
--group=nginx:组为nginx。
--with-http_ssl_module:提供HTTPS⽀持,ssl证书模块。
--with-http_stub_status_module:获取nginx⼯作状态模块。
--with-http_realip_module:获取真实客户端IP。
--with-stream:启⽤TCP/UDP代理模块。
5.创建用户
[root@nginx nginx-1.26.1]# useradd -s /bin/nologin -M nginx
5.检查安装目录
[root@nginx nginx-1.26.1]# tree /usr/local/nginx/
[root@nginx nginx-1.26.1]# cd /usr/local/nginx/
6.启动nginx并查看
[root@nginx nginx]# ./sbin/nginx
[root@nginx nginx]# netstat -lnput | grep nginx