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,一经查实,立即删除!

相关文章

【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…

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;然…

如何将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 &…

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

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

Java的Mvc整合Swagger的knife4框架

Swagger的介绍 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用Swagger&#xff0c;就是把相关的信息存储在它定义的描述文件里面&#xff08;yml或json格式&#xff09;&#xff0c;再通过维护这个描述 文件可以去更…

01_Node.js入门 (黑马)

01_Node.js入门 知识点自测 从 index.js 出发&#xff0c;访问到 student/data.json 的相对路径如何写? A&#xff1a;../public/teacher/data.json B&#xff1a;./public/student/data.json C&#xff1a;../student/data.json <details><summary>答案</sum…

2024.12.5——攻防世界Training-WWW-Robots攻防世界baby_web

2024.12.5—攻防世界Training-WWW-Robots 知识点&#xff1a;robots协议 dirsearch工具 本题与第一道Robots协议十分类似&#xff0c;不做wp解析 大致步骤&#xff1a; step 1 打开靶机&#xff0c;发现是robots协议相关 step 2 用dirsearch进行扫描目录 step 3 url传参r…

电脑无法识别usb设备怎么办?电脑无法识别usb解决方法

usb设备是我们常解除的外部操作以及存储设备&#xff0c;它可以方便用户数据传输以及操作输入。但在使用过程中&#xff0c;大家基本都碰到过电脑无法识别usb设备这种情况。这种情况下&#xff0c;我们应该怎么办呢&#xff1f;下面将为你介绍几种可能的原因和解决方法&#xf…

【学习总结|DAY014】Java面向对象高级-继承、多态

一、继承&#xff08;Inheritance&#xff09; 1. 概述 继承是面向对象编程的一种特性&#xff0c;允许我们定义一个类&#xff08;称为子类或派生类&#xff09;以继承另一个类&#xff08;称为超类或基类&#xff09;的功能。 2. 语法格式 public class Zi extends Fu {/…

筑起厂区安全--叉车安全防护装置全解析

在繁忙的工业生产领域中&#xff0c;叉车作为搬运工&#xff0c;穿梭于仓储与生产线之间。然而&#xff0c;叉车的高效运作背后&#xff0c;也隐藏着诸多安全风险&#xff0c;尤其是在那些空间狭小、物流繁忙的环境中。为了降低这些潜在的危险&#xff0c;叉车安全防护装置便成…

MS SQL SERVER服务自动停止解决

报错原因 电脑异常重启&#xff0c;导致 MS SQL server 服务启动后自动停止&#xff0c;在【计算机管理】-【事件查看器】-【windows日志】中进行查看系统错误日志&#xff0c;在【应用程序】下发现可能的错误信息&#xff1a; 传递给数据库 ‘model’ 中的日志扫描操作的日志…

网络安全信息收集(总结)更新

目录 重点&#xff1a; 前言&#xff1a; 又学到了&#xff0c;就是我们什么时候要子域名收集&#xff0c;什么时候收集域名&#xff0c;重点应该放前面 思考&#xff1a; 信息收集分为哪几类&#xff0c;什么是主域名&#xff0c;为什么要收集主域名&#xff0c;为什么要收…

使用 Postman 上传二进制类型的图片到后端接口写法

我们有的时候会有需求&#xff0c;就是通过 postman 传递二进制图片到后端接口&#xff0c;如下图&#xff1a; 那我们的 Java 接口需要怎么写呢&#xff1f; Spring Boot 接收这些数据的方式需要使用 RequestBody 注解来处理原始的二进制数据&#xff08;byte[]&#xff09;。…