Linux WEB服务器的部署及优化

1.用户常用关于web的信息

1.1.什么是www

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

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

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

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

1.2.网址

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

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

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

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

1.3.URL组成

URL组成机

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

2.HTTP简介

2.1.什么是http HTTP协议:

全称为Hyper Text Transfer Protocol(超文本传输协议) 简单来说http就是从服务器传输超文本(html)到本地浏览器的传输协议 HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送请 求(Request)Web服务端根据接收到的请求数据后,向客户端发送响应信息(Response)。

https://developer.mozilla.org/zh-CN/docsWeb/

2.2.http工作机制

2.2.1.web中常用的语言介绍

html语言 超文本标记语言

<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>HTML语言</title>
</head>
<body>
<h1 style="color:red">欢迎</h1>
<p><a href=http://www.baidu.com>百度</a>你好</p>
</body>
</html>

 

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

<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>这是标题</h1>
<p>红色代表喜庆,该段为红色</p>
<p class="ex">蓝色,宁静而深邃的色彩,承载着丰富的寓意和象征意义。该段落中的文本是蓝色的。</p>
</body>
</html>
css文件
--body {color: #e76666}h1 {color: #65c2b1}p.ex {color: #6e6ea2}

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>
</html>

 

2.2.2.mine(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展
  • 它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处 理

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

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

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

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

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

2.3.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

实际报文的主体内容:

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

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

6.发送响应报文:

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

2.4.http协议报文头部结构

2.4.1.请求报文

请求报文由三部分组成:开始行、首部行、实体主体

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

首部行通常用键值表示 空格 实体主题数据,一般在post动作中可以提看到

开始行中的请求方法:

 

2.4.2.响应报文

响应报文由三部分组成即:开始行、首部行、实体主体

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

首部行通常用键值表示 空格 实体主题数据,即获取内容

2.5.状态代码

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

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

3.web服务的配置详解

3.1.web服务的常用种类

Apache  Nginx  openresty  大厂自研

curl -I 163.com
curl -I baidu.com

3.2.Nginx的安装

开源版本的Nginx官网:nginx

[root@localhost 桌面]# dnf install nginx -y
[root@localhost ~]# systemctl enable --now nginx //开启服务
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

查看端口

[root@localhost 桌面]# netstat -antlupe | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          37696      3402/nginx: master  
tcp6       0      0 :::80                   :::*                    LISTEN      0          37697      3402/nginx: master  

默认配置文件

[root@localhost 桌面]# cd /etc/nginx

默认发布目录

[root@localhost nginx]# cd /usr/share/nginx/html/

修改默认发布目录

[root@localhost nginx]# mkdir /nginx/virtual/aaa.org/{news,bbs}/html -p
[root@localhost nginx]#  echo bbs.aaa.org > /nginx/virtual/aaa.org/bbs/html/index.html
[root@localhost nginx]#  echo news.aaa.org >/nginx/virtual/aaa.org/news/html/index.html
[root@localhost nginx]# vim nginx.conf
root /nginx/html;
index aaa.html; //默认发布文件

3.4nginx配置文件内容详解

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模块配置

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;
}
}

3.5.Nginx配置

3.5.1基于IP的虚拟主机

[root@localhost 桌面]# mkdir /nginx/virtual/aaa.org/{news,bbs}/html -p
[root@localhost 桌面]# ls -ld /nginx/virtual/aaa.org/{news,bbs}/html 
drwxr-xr-x 2 root root 6 12月 10 16:13 /nginx/virtual/aaa.org/bbs/html
drwxr-xr-x 2 root root 6 12月 10 16:13 /nginx/virtual/aaa.org/news/html
[root@localhost 桌面]# echo bbs.aaa.org > /nginx/virtual/aaa.org/bbs/html/index.html
[root@localhost 桌面]# echo news.aaa.org > /nginx/virtual/aaa.org/news/html/index.html[root@localhost 桌面]# ip a a 172.25.254.101/24 dev ens160
[root@localhost 桌面]# ip a a 172.25.254.102/24 dev ens160[root@localhost conf.d]# vim vhosts.conf
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# nginx -s reload
[root@localhost conf.d]# cat vhosts.conf
server{listen 172.25.254.101:80;root /nginx/virtual/aaa.org/bbs/html;index index.html;
}
server {listen 172.25.254.102:80;root /nginx/virtual/aaa.org/news/html;index index.html;
}

 

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

3.5.2基于域名的虚拟主机

[root@localhost conf.d]# vim vhosts.conf
[root@localhost conf.d]# cat vhosts.conf
server{listen 80;server_name bbs.aaa.org;root /nginx/virtual/aaa.org/bbs/html;index index.html;
}
server {listen 80;server_name news.aaa.org;root /nginx/virtual/aaa.org/news/html;index index.html;
}
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# nginx -s reload

Linux中做域名解析

[root@localhost conf.d]# vim /etc/hosts
[root@localhost conf.d]# curl www.aaa.org
aaa
[root@localhost conf.d]# curl www.bbs.org
^[[A^C
[root@localhost conf.d]# curl bbs.aaa.org
bbs.aaa.org
[root@localhost conf.d]# curl news.aaa.org
news.aaa.org

3.5.3基于认证的访问控制 

基于ip的访问控制

root@localhost html]# mkdir admin
[root@localhost html]# echo admin > admin/index.html
[root@localhost html]# curl 172.25.254.100/admin/
admin[root@localhost html]# vim /etc/nginx/nginx.conf
[root@localhost html]# nginx -s reload
[root@localhost html]# curl 172.25.254.100/admin/
admin

 

基于IP的访问控制

[root@localhost html]# dnf install httpd-tools -y
[root@localhost html]# htpasswd -cm /etc/nginx/.htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin
[root@localhost html]# cat /etc/nginx/.htpasswd
admin:$apr1$wq41crUZ$hLYd97P6s4ceABx4XWZpD.[root@localhost html]# vim /etc/nginx/nginx.conf
[root@localhost html]# nginx -s reload
[root@localhost html]# curl 172.25.254.100/admin/ -uadmin:aaa
aaa

 

3.6.web服务器的数据加密(https)

3 3.6.1.https简介 

  • HTTP协议以明文方式发送内容,不提供任何方式的数据加密,
  • HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等
  • 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
  • HTTPS全称:Hyper Text Transfer Protocol over Secure Socket Layer ),是以安全为目标的HTTP通道
  • HTTPS并不是一个新协议,而是HTTP+SSL(TLS)
  • 原本HTTP先和TCP直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。

3.6.2.https握手流程

3.6.3.部署https

1.生成密钥

[root@localhost html]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/nginx/certs/aaa.org.key -x509 -days 365 -out /etc/nginx/certs/aaa.org.crt
[root@localhost 桌面]# mkdir /nginx/virtual/aaa.org/login/html -p
[root@localhost 桌面]# echo login.aaa.org > /nginx/virtual/aaa.org/login/html/index.html[root@localhost html]# cd /etc/nginx/certs/
[root@localhost certs]# ls
aaa.org.crt  aaa.org.key
[root@localhost certs]# openssl x509 -in aaa.org.crt -text -noout
[root@localhost certs]# cd /etc/nginx/conf.d/
[root@localhost conf.d]# vim https.confserver {listen 443;server_name login.aaa.org;root /nginx/virtual/aaa.org/login/html/;index index.htmlssl_certificate "/etc/nginx/certs/aaa.org.crt";ssl_certificate_key "/etc/nginx/certs/aaa.org.key";ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers          HIGH:!aNULL:!MD5;
}
~

3.7搭建动态网站

  • 动态网站指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。

  • 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。

  • 动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访 问网站是通过读取数据库来动态生成网页的方法

配置web服务器对php站点的支持

[root@localhost ~]# mkdir -p /nginx/html/index.php
[root@localhost html]# cat index.php 
<?phpphpinfo();
?>

2.配置web服务器对php页面的发布

        location ~ \.php$ {fastcgi_pass php-fpm;  # 对应前面在 php-fpm.conf 中定义的 upstream 名称fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /nginx/html/$fastcgi_script_name;include fastcgi_params;}

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

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

相关文章

Rust迭代器——drain

概述&#xff1a; 通常用于集合类型&#xff08;如Vec、HashMap等&#xff09;来移除并返回集合中的元素。就是会在遍历过程中将这些元素从集合中移除&#xff0c;使用drain可以避免在移除元素时进行多次分配内存和拷贝的操作&#xff0c;从而提高性能。 示例&#xff1a; le…

vba学习系列(9)--按需求计数单元格数量

系列文章目录 文章目录 系列文章目录前言一、按需求计数单元格数量1.需求 二、使用步骤1.vba源码2.整理后 总结 前言 一、按需求计数单元格数量 1.需求 一个表中有多个类型的单元格内容&#xff0c;比如&#xff1a;文字、数字、特殊字符、字母数字…… 我们要计数字母数字的…

【JAVAFX】普通的确认对话框使用

普通alert确认对话框 Alert alert new Alert(Alert.AlertType.CONFIRMATION, "确定要关闭窗口吗&#xff1f;", ButtonType.YES, ButtonType.NO);alert.setHeaderText(null);alert.initOwner(primaryStage);Optional<ButtonType> result alert.showAndWait()…

opencv获取摄像头的最大分辨率图像

事情是这样的&#xff0c;在拼多多花了40买了一个4k高清的摄像偷&#xff0c;确实清楚。但是我一直以为网络摄像头分辨率只有640*480,于是用python测试了一下&#xff0c;上代码 import cv2def get_max_resolution(camera_index):"""获取摄像头的最大分辨率。&…

Redis 数据结构(二)—集合和有序集合

集合&#xff08;Set&#xff09;允许用户将多个各不相同的元素&#xff08;文本或二进制数据&#xff09;存储到集合中&#xff0c;以无序的方式存储元素。 有序集合&#xff08;Sorted Set&#xff09;同时具有“有序”和“集合”两种性质。每个元素由一个成员和分值组成。成…

【HarmonyOS学习日志(13)】计算机网络之TCP/IP协议族(二)

文章目录 TCP/IP协议族ARPDNS标志字段&#xff1a;协商具体的通信方式和反馈通信状态DNS查询问题的格式资源记录&#xff08;Resource Record, RR&#xff09;格式&#xff1a;被用于应答字段、授权字段和额外信息字段 IP协议IP服务的特点无状态无连接不可靠 IP头部结构IPv4头部…

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

集成 Applitools 进行视觉回归测试(快速入门) 简介Applitools 的核心特点Applitools 的应用场景1. 准备工作2. 获取示例项目2.1 下载示例代码2.2 安装依赖2.3 选择测试运行方式3. 代码解析3.1 测试用例示例4. 运行测试4.1 设置 Applitools API 变量4.2 设置 Applitools Eyes …

javaScript交互补充

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置&#xff08;偏移&#xff09;、大小等 ●获得元素距离带有定位祖先元素的位置 ●获得元素自身的大小&#xff08;宽度高度&#xff09; ●注意&#xff1a;返回的…

【Linux】-学习笔记09

第六章、nfs网络文件系统 1.nfs网络文件系统简介 NFS(Network File system&#xff0c;网络文件系统)是由SUN公司研制的UNIX表示层协议&#xff0c;它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源&#xff0c;主要在unix系列操作系统上使用。…

【C++】LeetCode:LCR 078. 合并 K 个升序链表

题干&#xff1a; 给定一个链表数组&#xff0c;每个链表都已经按升序排列。 请将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 解法&#xff1a;优先队列 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *ne…

xvisor调试记录

Xvisor是一种开源hypervisor,旨在提供完整、轻量、移植且灵活的虚拟化解决方案,属于type-1类型的虚拟机,可以直接在裸机上启动。 启动xvisor步骤: 1、搭建riscv编译环境 首先从github上下载riscv-gnu-toolchain很费劲,建议直接从国内的源下载 git clone https://gitee…

minGW安装教程

一、下载 1.通过官网WinGW官网下载 http://www.mingw-w64.org 2.通过SourceForge网站下载MinGW https://sourceforge.net/projects/mingw/files/latest/download 二、安装 右键mingw-get-setup.exe&#xff0c;以管理员身份运行 点击Install安装 点击“Change”修改安装地…

BFS入门

目录 定义二叉树层次遍历电梯问题倒可乐BFS基本思想算法 四方访问 定义 BFS 通常是指广度优先搜索&#xff08;Breadth - First Search&#xff09;&#xff0c;它是一种图形数据结构的遍历算法。从给定的起始顶点开始&#xff0c;首先访问起始顶点的所有邻接顶点&#xff0c;然…

【数据库】Oracle

文章目录 1. 批量更新 1. 批量更新 这种方式将所有更新操作放在一个事务中执行&#xff0c;减少了与数据库的交互次数&#xff0c;从而可能提高性能。此外&#xff0c;事务处理还可以确保数据的一致性和完整性。begin; update mytable set STATE 102,STATE_DATE now() …

SQL Server数据库中设置索引的策略

在 SQL Server 中&#xff0c;索引通过加快数据检索速度在优化查询性能方面发挥着关键作用。在数据库中设置索引的策略受数据库结构、表的大小和将要运行的查询类型的影响。索引策略通常涉及考虑维度表、事实数据表、大型表和小型表之间的差异。以下是如何将索引应用于这些不同…

如何将CSDN的文章保存为PDF?

目录 1、打开CSDN文章2、按F12或者鼠标右键选择检查并进入控制台3、在控制台输入以下代码4、然后回车&#xff08;Enter&#xff09;如果纵向显示不全就横向 1、打开CSDN文章 2、按F12或者鼠标右键选择检查并进入控制台 3、在控制台输入以下代码 (function(){ $("#side&q…

25考研软件工程 西南大学跟重庆大学哪个难?

需知晓&#xff0c;西南大学每年报考人数众多&#xff0c;可这不代表报考软件工程专业的人数就多呀&#xff0c;况且西南大学的优势学科并非工科&#xff0c;故而软件工程的报考热度不会如题主所言那般高呢。 其次得明白&#xff0c;软件工程专业上岸难度方面&#xff0c;重庆大…

普通算法——二维前缀和

二维前缀和 题目链接&#xff1a;https://www.acwing.com/problem/content/798/ 题目描述&#xff1a; 输入一个 n n n 行 m m m 列的整数矩阵&#xff0c;再输入 q q q 个询问&#xff0c;每个询问包含四个整数 ** x 1 , y 1 , x 2 , y 2 x1,y1,x2,y2 x1,y1,x2,y2 &…

【无标题】dom不更新 萤石云 ezuikit-js class赋值失败

原因&#xff1a;EZUIKit类赋值到dom节点后影响到dom节点更新 解决&#xff1a;外层嵌套一层节点&#xff0c;v-for外层节点如下 <div :class"item" v-for"item in videoPlay2" :key"item"> <div :id"item"></div> …

Mock神器:Easy-Mock 私有化部署及使用介绍

在现代前后端分离的开发模式中&#xff0c;后端接口的数据模拟是一个常见且必要的需求。尤其是在后端接口尚未开发完成时&#xff0c;前端开发需要依赖模拟数据进行开发与测试。Easy-Mock 是一个非常流行的开源工具&#xff08;虽然它已经停止更新好长时间了&#xff09;&#…