当前位置: 首页 > ds >正文

WEB服务器的部署及优化

用户常用关于web的信息

www万维网: 【通过网站访问链接】

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

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

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

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

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

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

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

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

URL组成

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

HTTP简介

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

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

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

http工作机制

一次http事务包括:

        http请求:http request

        http响应: http response

Web资源: web resource

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

资源类型:

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

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

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

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

web中常用的语言介绍

html语言 超文本标记语言

css 层叠样式表 表述网站的风格【静态的】

js实现html和css实现不了的功能比如动画效果【也是静态的】

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

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

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

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

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

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

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

配置外网访问

使用新的虚拟机配置软件仓库

# mkdir /rhel9

# mount /dev/sr0  /rhel9/              【挂载】

# df    查看结果:

# vim /etc/rc.d/rc.local               【配置开机自动挂载】

# chmod +x /etc/rc.d/rc.local

配置nginx运行

# chmod +x /bin/vmset.sh 【运行文件】

# cd /etc/yum.repos.d/

# vim rhel9.repo

# dnf install nginx -y      【安装web服务之nginx】

# systemctl enable --now nginx       【启动nginx】

# firewall-cmd --permanent --add-service=http         【火墙放行】

# firewall-cmd --reload        

# firewall-cmd --list-all                【list查看是否是http】

# cd /usr/share/nginx/html/       【nginx默认共享的目录】

# echo timinglee > index.html             【输入timinglee进入index.html】

# netstat -antlupe |grep nginx             【可以查看到web服务默认使用端口为80端口】

# ll /usr/share/nginx/html/index.html          【查看默认端口文件】

# cat /proc/cpuinfo                  【查看cpu的数量】

# ps aux | grep nginx                    【查看aux进程,nginx的cup数量】

修改端口

# vim /etc/nginx/nginx.conf                【配置网页文件】

listen      8080;              【修改端口,一定要加 ;

# nginx -s reload                        【刷新网页】

查看运行结果:

# firewall-cmd --permanent --add-port=8080/tcp         【火墙放行】

# firewall-cmd --reload

修改发布文件

# vim test.html                    【修改发布文件内容】

# vim /etc/nginx/nginx.conf 

index     test.html;             【修改发布目录】

# nginx -t       【检测语法是否正确】

# nginx -s reload              【刷新】

修改添加执行目录文件依然是先执行第一个

# rm -fr test.html            【删除后可以访问第二个】

修改默认发布目录

# mkdir /usr/share/nginx/timinglee

# echo hahaha > /usr/share/nginx/timinglee/index.html

# vim /etc/nginx/nginx.conf

# nginx -s reload

运行结果:

http访问请求完整过程

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

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

        a.单进程I/O模型【效率慢,执行必定响应】:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应。

        b.多进程I/O模型【取决于自身可执行的请求数】:并行启动多个进程,每个进程响应一个连接请求。

        c.复用I/O结构【请求会记录,排队响应】:启动一个进程,同时响应N个连接请求

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

处理请求: 

        服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理常用请求Method: GET、POST提交、HEAD、PUT上传、DELETE删除、TRACE、OPTIONS 【红色是常用的】

访问资源:                 【影响速率的部分】

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

构建响应报文:

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

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

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

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

实际报文的主体内容

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

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

发送响应报文

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

http协议报文头部结构

请求报文

响应报文

# curl -v 192.168.150.135                   【查看报文结构形式】

* Mark bundle as not supporting multiuse   —报文响应结果【404 Not Found 表示资源不存在】

创建文件后再次运行结果:

状态代码

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

状态码

含义

详解

1xx

指示信息

表示请求已接收,继续处理

2xx

成功

表示请求已被成功接收、理解、接受

3xx

重定向

要完成请求必须进行更进一步的操作

4xx

客户端错误

请求有语法错误或请求无法实现

5xx

服务器端错误

服务器未能实现合法的请求

常见状态代码

状态码

含义

 200 OK

客户端请求成功

400 Bad Request

客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized

请求未经授权,这个状态代码必须和   WWW-Authenticate  报头域一起使用。

403 Forbidden

服务器收到请求,但是拒绝提供服务。

404 Not Found

请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error

服务器发生不可预期的错误。

503 Server Unavailable

服务器当前不能处理客户端请求,一段时间后可能恢复正常。

创建独立网址

html ]# mkdir lee

# echo lee > lee/index.html

# vim /etc/nginx/nginx.conf                 【读取有顺序,先读取的不能被后面的覆盖】

# nginx -s reload

# curl -v 192.168.150.135/lee/   运行结果:

# vim /etc/nginx/nginx.conf

# nginx -s reload

修改后运行结果:

基于用户操作访问认证

dnf install httpd-tools -y          【建立文件】

# ll /etc/nginx/.htpasswd                  【查看有无建立文件】

# htpasswd -cm /etc/nginx/.htpasswd lee        【建立网址用户】

# htpasswd -m /etc/nginx/.htpasswd admin      【 -cm 会覆盖文件的用户,所以用 -m

# cat /etc/nginx/.htpasswd   运行结果:

# vim /etc/nginx/nginx.conf                      【配置让网站需要密码访问】

# nginx -t  运行结果:

# nginx -s reload       【刷新】

# curl 192.168.150.135/lee/

# curl -u lee:lee 192.168.150.135/lee/   运行结果:

发布默认测试页

# cd /usr/share/nginx/html/

# ip a a 192.168.150.20/24 dev ens160               【添加子ip地址】

# ip a  运行结果:

网站查看:

# mkdir /usr/share/nginx/virtualhost/{news,bbs}   -p

# echo 192.168.150.10  >  /usr/share/nginx/virtualhost/bbs/index.html

# echo 192.168.150.20  >  /usr/share/nginx/virtualhost/news/index.html

# cd /etc/nginx/conf.d/

# ls确认没有文件后创建网页文件

# vim vhosts.conf

创建基于域名的虚拟主机

# vim vhosts.conf                         【配置域名】

# nginx -s reload

运行结果:

# mkdir /usr/share/nginx/virtualhost/haha/  -p

# echo haha > /usr/share/nginx/virtualhost/haha/index.html

# vim vhosts.conf                    【添加网址】

# nginx -s reload

# vim /etc/hosts                      【配置子网页】

访问结果:

# cat /etc/hosts

运行结果:

http://www.xdnf.cn/news/2561.html

相关文章:

  • 线上JVM调优与全栈性能优化 - Java架构师面试实战
  • DataStreamAPI实践原理——快速上手
  • 学习笔记—双指针算法—移动零
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: NSString类型与CFStringRef类型字符串相互转换.
  • 通过数据增强打造抗噪音多模态大模型
  • MySQL 大数据量分页查询优化指南
  • Git 撤回合并提交
  • WPF之XAML基础
  • AlexNet网络搭建
  • OneNet云平台
  • java16
  • Java快速上手之实验五
  • 若依脱敏功能升级:接口返回想脱就脱,想不脱就不脱(实现灵活可控制的数据脱敏)
  • 手撕——贪吃蛇小游戏(下)
  • 【quantity】1 创建 crates.io 账号并上传 Rust 库
  • 数据库查询艺术:从单表操作到多表联查的全面指南
  • Rollup、Webpack、Esbuild 和 Vite 前端打包工具
  • Redis01-基础-入门
  • 华为仓颉编程语言的实际用法与使用领域详解
  • OpenCV实验室工具的使用
  • 【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程
  • C/C++死锁和活锁
  • k8s学习记录(五):Pod亲和性详解
  • 解决两个技术问题后小有感触-QZ Tray使用经验小总结
  • 分布式GPU上计算长向量模的方法
  • 数据一致性问题剖析与实践(四)——竞态条件竞争导致的一致性问题
  • 制作一款打飞机游戏26:精灵编辑器
  • streamlit实现非原生的按钮触发效果 + flask实现带信息的按钮触发
  • Pikachu靶场-PHP反序列化漏洞
  • 2024ICPC网络赛第二场题解