RHCE上课笔记(前半部分)

第一部分 网络服务

第一章 例行性工作

1.单一执行的例行性工作

单一执行的例行性工作(就像某一个时间点 的闹钟):仅处理执行一次

1.1 at命令:定时任务信息
[rhel@localhost ~]$ rpm -qa |grep -w at
at-spi2-core-2.40.3-1.el9.x86_64
at-spi2-atk-2.38.0-4.el9.x86_64
at-3.1.23-11.el9.x86_64

两种帮助方式:man --help(不详细)

1.2 at命令格式
at [参数] [时间]

例如:

#定义三分钟之后显示
[root@server ~]# at now + 3 minutes
1.3短命令
-v:显示出你定义任务完成后的时间
-r:删除任务
-m:当任务完成之后,即使没有标准输出,将给用户发送邮件
-c:可以列出后面接的该项工作的实际命令内容(脚本)
-d:atrm的别名,可以取消一个在at调度中的工作
-l:是atq的别名,可列出目前系统上面的所有该用户的at调度
-f:从文件中读取作作业

1.4 定义任务时,写时间的方式
HH:MM
HH:MM YY-MM-DD
​
查询该任务信息:atq命令 = at -l
​
删除该任务信息:at - r = a
​
(一个是手动删除,一个就是等任务到时间执行后就会自动删除)
​
/etc/at.deny : 拒绝用户使用at定义任务  ---- 是at命令自身存在的;
​
/etc/at.allow : 允许用户使用定义任务  ---- at命令本身没有,但你创建了也是可以生效的;

img编辑

img编辑

定义rhel用户不能定义单一次任务;

注意:允许是优先的!若at.deny文件与at.allow文件里面都有一个用户,则优先考虑的是allow文件的;

1.5 任务脚本路径

img编辑

2.cron:周期性任务计划

安装软件:yum.install + 文件名

注意:与at不一样,任务执行完成后,不会删除

2.1指定某个用户去编辑:
crontab -u 用户
2.2 进入编辑模式

第一种:

crontab -e (edit)

第二种:周期性任务脚本的路径

/var/spool/cron

文件编辑后保存退出:1.esc 2.:wq

若在定义的时候,其他不需要的就用*代替

img编辑

时间写了,也要把任务写上!!

2.3查看周期性任务

这是查看当前用户定义的单一周期性任务

crontab -l

这是查看指定用户定义单一周期性任务

crontab -l -u 用户

2.4 清空任务列表
 crontab -r

若只想删除某一条任务的话,需要用-e先进入编辑里面,再用光标选中某一行,按dd删除

2.5 默认时间格式
分 时 日 月 周 任务

注意:date的时间格式为 ----- 月日时分年点秒

2.6 crontab计划任务的时间格式:
0-590-231-311-120-7

/uer/bin/wall ----- 若命令没有在解释器里面执行,用绝对路径

wall ----- 若命令在解释器里面执行,可以直接使用

2.7 crontab的命令选项
-u <user>  define user-e         edit user's crontab-l         list user's crontab-r         delete user's crontab  (清空)-i         prompt before deleting-n <host>  set host in cluster to run users' crontabs-c         get host in cluster to run users' crontabs-s         selinux context-V         print version and exit-x <mask>  enable debugging
2.8 特殊字符
特殊字符含义
*代表任何时刻
,代表分隔时段
- 0-59代表一段时间范围
/数字指定时间的间隔频率,例如每 3 分钟进行一次,*/3

注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。

[root@server ~]# crontab -e
0 9 * * * wall "good morning"

确保安装包,确认在进行?

2.9 日志文件
tail -f /var/log/cron
2.10 系统级别性周期性任务 --- 很方便

编辑任务时用户身份比较多适合用

vim /etc/crontab

img编辑

2.11 任务扩展配置
/etc/anacrontab

就是给未能正常执行的任务再定一个时间!

第二章 时间服务器

1.服务

是运行在操作系统后台的一个或多个程序,为用户或系统提供某项特定的服务。

2.ntp
NTP 是网络时间协议(Network Time Protocol)的简称,通过 udp 123 端口进行网络时钟同步。
3.chrony
Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。

查看程序是否运行:

[root@server~]# ps -aux | grep chrony

如果程序未被运行,则需要开启:

systemctl start chronyd

systemctl start(启动)|stop(停止)|restart(重启)|enable(开机自启)|disable(开机禁用)|reload(重载)|load(加载)|status(状态) 程序名

默认是有安装的,如果没有安装的话,需要安装,步骤如下:

[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
1.#安装服务软件
[root@localhost ~]# yum install -y chrony
2.#重启服务并开机启动
[root@localhost ~]# systemctl enable --now chronyd
3.#配置时间服务器,编辑
[root@server1 ~]# cat /etc/chrony.conf
4.#设置时间服务器的服务端名字
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst    
#Allow NTP client access from local network.
#设置允许哪个客户端可以访问该服务器
#allow 192.168.81.130/16
client  192.168.10.129
为了让时间不一样,先修改时间:
[root@client ~]# date 010112122023
#编辑
[root@client ~]# vim /etc/chrony.conf
pool 192.168.81.129 ibusrt
#重启
[root@client ~]# systemctl restart chronyd
[root@client ~]# chronyc sources 

时间同步不成功:

1.网络不通(确保主机是同一种网络模式)
2.服务端必须关闭防火墙  systemctl stop firewalld
3.服务端和客户端的时区不一致
4.确认服务端和客户端的配置

4.配置时间服务器客户端
1.安装软件服务
2.运行软件程序
3.根据自定配置提供对应的服务 /etc/chrony.conf
vim /etc/chrony.conf
pool 2.rhel.pool.ntp.org ibrust   ----  信息注释
local stratum 10  ---- 删除注释,把当前的主机标记为10层级,最高层级是15;一般调为中等;
allow 192.168.81.129  ---- 允许当前网段内主机发请求
4.重新启动软件
systemctl restart chronyd.service

注意:1.一定要关闭防火墙

           2.关闭unix的规则

server  192.168.81.129
1.[root@server ~]# systemctl stop firewalld 或者
[root@server ~]# systemctl is-active firewalld
​
2.[root@server ~]# setenforce  0 (默认是1,打开的)

查看关闭没有:

[root@server ~]# systemctl status firewalld

查看程序文件位置:

[root@server ~]# rpm -ql + 程序
找直接以.conf的文件

5. 网络监听
[root@client]# netstat -tunalp
-t:tcp
-u:udp
-n:主机是按数值(地址型)标记
-a:all
-l:list监听的信息
-p:program程序
6.lsof
显示打开运行文件里面的信息
lsof -i  ---  列出所有的网络连接
lsof -i tcp     ---- 列出所有tcp网络连接信息
lsof -i udp     ---- 列出所有udp网络连接信息
lsof -i:3036    ---- 列出谁在使用某个端口
lsof -i tcp:80  ---- 列出谁子啊使用某个特定的tcp端口
lsof -i udp:55  ---- 列出谁子啊使用某个特定的udp端口
7. 判断本地网络服务是否运行
1.只要服务运行了,就能在本地看到ps -aux | grep chronyd(程序)
2.程序在运行,就说明服务是正常的systemctl status | grep chronyd(程序)  或者  systemctl in-active | grep chronyd(程序)  
3. 网络服务只要在运行,就会在某个端口存在监听信息netstat | grep chronyd(程序)ss -tunalp | grep chronyd(程序)
4.只要该网络服务有开启某个端口,就可以找到,只要查看某个端口服务是否正常运行就可以lsof -i:xx 

第三章 ssh

1、远程连接服务器简介

(1)什么是远程连接服务器
 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。``
2. 远程连接服务器的类型(以登录的连接界面来分类)
- 文字接口明文传输:Telnet 23、RSH等,目前非常少用加密传输:SSH为主,已经取代明文传输
- 图形接口:XDMCP远程控制、VNC(RFB)、XRDP(RDP3389)远程桌面等
3.连接加密技术简介

目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程 。

公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。
私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。

二.SSH工作过程:

1.五个阶段

在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段:

过程说明
版本号协商阶段SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本
密钥和算法协商阶 段SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用 的算法
认证阶段SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证
会话请求阶段认证通过后,客户端向服务器端发送会话请求
交互会话阶段会话请求通过后,服务器端和客户端进行信息的交互
A.TCP三次握手版本协商过阶段
目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本。
​
服务端默认已经开启ssh服务,打开了22号端口,等待客户端来连接
​
服务器向客户端发送第一个报文: 告诉了客户端使用了ssh版本以及软件信息
​
客户端收到报文之后,拿出服务器的ssh版本,看一下自己是否支持,如果支持使用该版本
B.协商算法和确定对称秘钥阶段

SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法:

对称加密: 同一秘钥既可以进行加密也可以进行解密

优势:使用一个秘钥它的加密效率高一些(快一些)      
​
缺陷:秘钥传输的安全性(在网络传输中不传输秘钥)      
​
应用: 传输数据(数据的双向传输)  

非对称加密:产生一对秘:

公钥:公钥加密 私钥:私钥解密(不会进行网络传输)

缺陷:公钥的安全性 客户端去访问一个服务器(假设数据被我们的hacker拦截了,hacker发送了自己的公钥给客户端,客户端用  hacker的公钥对数据进行加密,然后hacker用自己的私钥进行解密。从而获取到用户传送的隐私(用户和密码)信息,进一步对服务器动机);传送速度慢(效率低)      
​
优势:安全性更高  
​
应用: 单向的认证阶段(建立安全的连接保证后面对称加密的秘钥安全)  

DH密钥交换算法

步骤如下

  客户端发往服务器的DH初始化参数:ecdh public key客户端发送自己的公钥给服务器服务端发送自己的公钥给客户端计算出对称加密的秘钥(sessionkey)--NewKeys客户端计算出对称加密的秘钥(sessionkey)--newkeys解决了一个问题:保证了进行传输时候对称加密秘钥的安全。(能不能用的上这个秘钥,还取决于认证阶段是否成功)

C.第三阶段:认证阶段

SSH客户端向服务端发起认证请求,服务端对客户端进行认证

(1)基于口令的认证:

(2)基于公钥的认证:

步骤如下

1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
​
2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。
​
3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
​
4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
​
5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

D.第四阶段:会话请求阶段**

认证通过后,客户端向服务器端发送会话请求,建立新的连接

E.第五阶段:交互会话阶段

会话请求通过后,服务器端和客户端进行信息的交互

传输数据的的阶段:数据时要被加密(对称加密方式),对称加密的秘钥就是sessionKey(客户端和服务服务端在秘钥交换阶段互相计算出来的,sessionKey未进行网络传输)

2.ssh服务配置
#ssh服务安装包openssh-server
[root@server1 ~]# vim /etc/ssh/sshd_config
​
1.#Port 22 #监听端口,默认监听22端口 【默认可修改】
​
2.#AddressFamily any #IPV4和IPV6协议家族用哪个,any表示二者均有
​
3.#ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】
​
4.#ListenAddress :: #指明监听的IPV6的所有地址格式
​
5.#LoginGraceTime 2m #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
​
6.#PermitRootLogin yes #是否允许管理员远程登录,'yes'表示允许
​
7.#MaxAuthTries 6 #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
​
8.#MaxSessions 10 #允许的最大会话数
​
9.AuthorizedKeysFile .ssh/authorized_keys #选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
​
10.PasswordAuthentication no #是否允许支持基于口令的认证
​
11.#UseDNS no #是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
​
12.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接
​
13.AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

实验四:公钥验证 免密登陆
1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
​
2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。
​
3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
​
4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
​
5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

此作业以发布在csdn第一次作业里面!

第四章 web服务器

(www http apache nginx),今天主讲nginx

第一节

DNS:对域名进行解析,查询对应的地址

1.1 web服务器简介
www是world wide web的缩写,也就是全球信息广播的意思
1.2.网址及HTTP简介

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。

  • URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

  • 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>

    • 浏览器常支持的协议有:http、https、ftp等。

    • 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。

    • 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)

      • 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)

      • 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP

      • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

1.3.http请求方法:

在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。

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

状态码范围作用描述
100 - 199用于指定客户端相应的某些动作
200 - 299用于表示请求成功
300 - 399用于己经移动的文件,并且常被包含在定位头信息中指定新的地址系信息
400 - 499用于指出客户端的错误
500 - 599用于指出服务端的错误

常用状态码查询:常用的http状态码查询大全 - 知乎

1.4.常见状态代码、状态描述的说明如下:
  • 200 OK:客户端请求成功

    收到数据,但是数据有问题

    - 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
    - 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
    - 403 Forbidden:服务器收到请求,但是拒绝提供服务
    - 404 Not Found:请求资源不存在,举个例子:输入了错误的URL

    服务器内部的问题

    - 500 Internal Server Error:服务器发生不可预期的错误
    - 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常  

1.5.http协议请求的工作流程

HTTP默认端口80和8080

(1)终端客户在web浏览器地址栏输入访问地址域名售卖 (2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址 (3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来 (4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接 (5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文 (6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。 (7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。

第二节 web服务器的类型

2.1 静态页面和动态网页
静态页面:直接通过磁盘去获取信息
动态网页:

2.2静态页面资源特征
1. 处理文件类型:如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等-
​
2. 地址中不含有问号"?"或&等特殊符号。
​
3. 保存在网站服务器文件系统上的,是实实在在保存在服务器上的文件实体
​
4. 页内容是固定不变的,因此,容易被搜索引擎收录
​
5. 网页页面交互性交差,因为不能与数据库配合
​
6. 网页程序在用户浏览器端解析,当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)

优势:

1. 访问的效率比较高
​
2. 网页内容是固定不变的,因此,容易被搜索引擎收录
​
3. 网页程序在用户浏览器端解析,当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)

缺点:

1. 网页页面交互性交差,因为不能与数据库配合
​
2. 保存在网站服务器文件系统上的,是实实在在保存在服务器上的文件实体
2.3动态网页资源特点
1. 网觅扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi
​
2. 网页页面交互性强,可以与数据库配合
​
3. 地址中含有问号"?"或 & 等特殊符号
​
4. 不便于被搜索引擎收录

优势

客户端与服务端交互能力强**

缺点

1.访问的效率比较低
​
2.不便于被搜索引擎收录
2.4 nginx的搭建方式:LAMP 、LNMP
2.5 web服务器基本配置
防火墙和关闭 selinux(Security-Enhanced Linux)防火墙。
systemctl stop firewalld   和   setenforce 0
最后查看一下防火墙是否关闭
systemctl status firewalld
​
1.下载nginx[root@server]# yum install nginx -y
2.开启服务[root@server]# systemctl start nginx
3.查找uginx的配置文件[root@server]# rpm -ql nginx(找.conf)
4.编辑[root@server]# vim /etc/nginx/nginx.conf
​
#nginx服务配置文件nginx.conf的结构
#############全局配置(无{}标志)############
user nginx;              #进程所属用户
worker_processes auto;   #线程数量CPU核心数,(双核4线程,可以设置为4)
error_log /var/log/nginx/error.log;  #错误日志文件路径
pid /run/nginx.pid;               #nginx pid文件位置
include /usr/share/nginx/modules/*.conf;  #导入功能模块配置文件
#######################################################
##################性能配置(有{}标志)############
events {worker_connections 1024;  #tcp连接数
}
########################################################
##################http模块配置(有{}标志)############
http {    #http区块开始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;     #开启高效文件传输tcp_nopush          on;     #性能优化参数tcp_nodelay         on;     #性能优化参数keepalive_timeout   65;     #持久连接或超时时间types_hash_max_size 4096;   #性能优化参数 
​include             /etc/nginx/mime.types;   #可解析的静态资源类型default_type        application/octet-stream;include /etc/nginx/conf.d/*.conf;             #加载子配置文件
​server { #server区块开始,就相当于一个虚拟主机listen       80;listen       [::]:80;   server_name  _;    #服务名root         /usr/share/nginx/html;   #主页存放路径include /etc/nginx/default.d/*.conf;  #子配置文件路径error_page 404 /404.html;    #404错误的返回页面location = /404.html {       #location 定义用户请求的uri,并返回相应的资源文件}error_page 500 502 503 504 /50x.html;  #5xx状态返回的页面location = /50x.html {}}
}

补充:

看nginx是否在运行 [root@server]# ps -aux | grep nginx
总结:结束进程,可以stop该进程,也可以rm这个进程文件
(这里以nginx.pid举例)
[root@server]# kill -9 1991或者
[root@server]# rm /run/nginx.pid

index.html是默认的,可以不写;

如果存在问题的话,它会显示40.x什么···

2.6 自定义一个欢迎界面

1.自己创建一个文件

root         /usr/share/nginx/html;   #主页存放路径
​
[root@server html]# vim index.htm
注意:要在主页存放路径去创建文件
案例一:多ip访问多网站

1.通过nmtui连接网卡图形界面,实现网络配置;

ipv4

选择为manul,然后添show,添加地址,注意网段范围!!!

网关一般为xxx.xxx.xx.2

最后点ok!

[root@node1 ~]# nmcli  connection modify ens160  ipv4.method manual   ipv4.addresses  192.168.81.129/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.81.2 connection.autoconnect yes 
​
[root@node1 ~]# nmcli  connection modify ens33    +ipv4.addresses  192.168.81.130/24 
​
[root@node1 ~]# nmcli connection up ens33 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
​
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce  0
[root@node1 ~]# cat /etc/nginx/conf.d/test_ip.conf 
​
server {listen 192.168.10.132:80;root /www/ip/132;location / { #配置/==/www/ip/100下的资源文件}
}
注意:每条语句后面都有一个分号;

2.将多个ip写入进去

在加载配置文件里面写入ip,建议专门拿个文件写,避免后面又错,可以直接删掉,对主文件不会有任何影响
/etc/nginx/conf.d/*.conf;             #加载子配置文件
​
在操作之前,需要关闭防火墙unix的规则
并安装服务程序
1.编辑
[root@localhost ~]# vim /etc/nginx/conf.d/test_ip.conf
注意:在子文件里面创建文件装要写入的内容,要以.conf结尾!!!
​server {listen 192.168.81.132:80;root /www/ip/132;location / {index index.html;}}server {listen 192.168.81.129:80;root /www/ip/129;location / {index index.html;}}
​
​
2.根据配置,需要创建自定义文件创建多级目录,需要加上-pv[root@localhost ~]# mkdir /www/ip/{132,129} -pv
我这里再写上一个测试内容看看:
[root@localhost ~]# echo this is 132 > /www/ip/132/index.html
[root@localhost ~]# echo this is 129 > /www/ip/129/index.html
如果想把两个写到不同的页面,将其中一个指定为超链接
[root@localhost ~]# cd /www/ip/132
[root@localhost 132]# echo this is two page > 2.html
[localhost 132]# echo this is one page > 1.html

3.重启一下[root@localhost ~]# systemctl restart nginx
注意:如果重启不成功,说明写入的有问题,根据提示修改问题!
这种很好排查出问题!
4.客户端连接测试可以在window里面测试也可以用url图形界面
格式:url http://(ip)

如果重启不了,怎么排查问题勒?

1.systemctl status nginx
2.journalctl -xeu nginx.service
2.7 多端口访问网站
[root@localhost ~]# vim /etc/nginx/nginx.conf
​
server {listen 192.168.10.129:9999;root /www/port/9999;location / {}
}
server {listen 192.168.81.132:8888;root /www/port/8888;location / { }
}
​
[root@node1 ~]# systemctl restart nginx
[root@node1 ~]# echo 8888 > /www/port/8888/index.html
[root@node1 ~]# echo 9999 > /www/port/9999/index.html
[root@localhost conf.d]# curl http://192.168.81.132:8888
this is 8888
2.8 多域名访问网址

[root@node1 ~]# cat /etc/nginx/conf.d/test_name.conf 
server {listen 192.168.10.129:80;root /www/name/node1;server_name www.node1.com;location / { }
}
server {listen 192.168.10.130:80;root /www/name/node2;server_name www.node2.com;location / { }
}
[root@node1 ~]# vim /etc/hosts
[root@node1 ~]# mkdir -pv /www/name/{node1,node2} 
mkdir: created directory '/www/name'
mkdir: created directory '/www/name/node1'
mkdir: created directory '/www/name/node2'
[root@node1 ~]# echo node1 > /www/name/node1/index.html
[root@node1 ~]# echo node2 > /www/name/node2/index.html
[root@node1 ~]# cat /etc/hosts
192.168.10.129 www.node1.com 
192.168.10.130 www.node2.com
[root@node1 ~]# systemctl restart nginx 
[root@node1 ~]# curl www.node1.com
node1

注意:域名去访问网站的时候,是需要地址解析的;可以自己去添加;notepad++不免费

客户端主机 --- Windows ---- system32 --- dirvers--- etc ----- hosts ----- 然后添加主机和解析的结果

2.9:虚拟目录和用户控制
alias --- 别名
格式:alias kankan = cat
[root@node1 ~]# cat /etc/nginx/conf.d/test_alias.conf 
server {listen 192.168.10.129:80;root /www/ip/129;location /real { alias /openlab/real/;   #apache==alias  /www/ip/129/real /openlab/real;}
}
[root@node1 ~]# mkdir /openlab/real -pv 
[root@node1 ~]# echo this is real > /openlab/real/index.html
[root@node1 ~]# systemctl restart nginx.service 
[root@node1 ~]# curl http://192.168.10.129/real/
this is real
​
############用户认证###########
[root@node1 ~]# cat /etc/nginx/conf.d/test_alias.conf 
server {listen 192.168.10.129:80;root /www/ip/129;location /real { ##########很重要#######alias /openlab/real/;auth_basic on;auth_basic_user_file /etc/nginx/users;######################}
}
[root@node1 ~]# htpasswd  -c /etc/nginx/users tom
New password: 
Re-type new password: 
Adding password for user tom
[root@node1 ~]# systemctl restart nginx 
[root@node1 ~]# curl 192.168.10.129/real/ -u tom
Enter host password for user 'tom':
this is real

想要安装某软件

2.10 https
1.简介
HTTP协议以明文方式发送内容,不提供任何方式的数据加密;
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS;
​
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。HTTPS并不是一个新协议,而是HTTP+SSL(Secure Sockets Layer --- 安全套接层)(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。 
​
SSL协议分为两层:
- SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
- SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
​
SSL协议提供的服务:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变

应用(http)应用(https)
TCPSSL
IPTCP
XXXIP

2.https协议加密所使用的算法
2.1 Hash算法常用在不可还原的密码存储、信息完整性校验等
常见的HASH算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMACSHA1。
​
2.2 共享密钥加密(对称密钥加密):加密和解密使用相同密钥。
对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。
​
2.3公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
3.TLS完整的通信流程

第一阶:段客户端端申请建立https连接

第二阶段:客户端和服务器确认加密版本,加密套件

第三阶段:证书发送验证 (客户端验证证书取出公钥,用公钥加密生成的对称秘钥发送个服务器通知改变加密信息传递)

第四阶段:服务收到消息,用私钥解密取,确认对称秘钥通知客户端ssl通道建立完成

第五阶段:客户端和服务端可以通过加密通道开始数据通信

第六阶段:客户端断开连接

#key是私钥文件
#crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
​
(第一种)    [root@localhost certs]# make jiami.crt
(第二种) #openssl  req -newkey rsa:4096 -nodes -sha256 -keyout haha.key -x509 -days 365 -out haha.crt
[root@www certs]# openssl genrsa -aes128 2048 > openlab.key(第三种) #openssl req -utf8 -new -key openlab.key -x509 -days 365 -out openlab.crt 

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

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

相关文章

Nacos 在云原生架构下的演进

作者&#xff1a;之卫 背景 Nacos 提供的最核心能力是动态服务发现与动态配置管理能力&#xff0c;在云原生环境下&#xff0c;借助云产品&#xff0c;如 EDAS&#xff08;企业级分布式应用服务&#xff09;平台中&#xff0c;我们可以很轻松地使用 K8s 来托管 Nacos 体系的微…

《WebKit 技术内幕》之六(1): CSS解释器和样式布局

《WebKit 技术内幕》之六&#xff08;1&#xff09;&#xff1a;CSS解释器和样式布局 CSS解释器和规则匹配处于DOM树建立之后&#xff0c;RenderObject树之前&#xff0c;CSS解释器解释后的结果会保存起来&#xff0c;然后RenderObject树基于该结果来进行规范匹配和布局计算。当…

基于 GPT 和 Qdrant DB 向量数据库, 我构建了一个电影推荐系统

电影推荐系统自从机器学习时代开始以来就不断发展&#xff0c;逐步演进到当前的 transformers 和向量数据库的时代。 在本文中&#xff0c;我们将探讨如何在向量数据库中高效存储数千个视频文件&#xff0c;以构建最佳的推荐引擎。 在众多可用的向量数据库中&#xff0c;我们将…

Tomcat的maxParameterCountmaxPostSize参数

Tomcat的maxParameterCount&maxPostSize参数 Tomcat的maxParameterCount&maxPostSize参数1.问题1.1问题现象1.2 参数总结1.3 问题总结 2 Tomcat官网的解释2.1 到https://tomcat.apache.org/找到文档入口2.2 找到文档的Reference2.3 查看配置文件的参数 3 文档看不明白&…

GIS项目实战08:JetBrains IntelliJ IDEA 2022 激活

为什么选择 IntelliJ IDEA 使用编码辅助功能更快地编写高质量代码&#xff0c;这些功能可在您键入时搜索可能的错误并提供改进建议&#xff0c;同时无缝地向您介绍编码、新语言功能等方面的社区最佳实践。 IntelliJ IDEA 了解您的代码&#xff0c;并利用这些知识通过在每种上…

Istio

1、Istio介绍 Istio 是由 Google、IBM 和 Lyft 开源的微服务管理、保护和监控框架。 官网&#xff1a;https://istio.io/latest/zh/ 官方文档&#xff1a;https://istio.io/docs/ 中文官方文档&#xff1a;https://istio.io/zh/docs Github地址&#xff1a;https://github.com…

vectorCast添加边界值分析测试用例

1.1创建项目成功后会自动生成封装好的函数,在这些封装好的函数上点击右键,添加边界值分析测试用例,如下图所示。 1.2生成的用例模版是不可以直接运行的,需要我们分别点击它们,让它们自动生成相应测试用例。如下图所示,分别为变化前和变化后。 1.3点击选中生成的测试用例,…

【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 广度优先搜索 状态压缩 LeetCode847 访问所有节点的最短路径 存在一个由 n 个节点组成的无向连通图&#xff0c;图中的节点按从 0 到 n - 1 编号。 给你一个数组 graph 表示这个图。其中&#xff0c;graph[i] 是一个列…

如何用“VMware安装Ubuntu”win11系统?

一、 下载Ubuntu 企业开源和 Linux |Ubuntu的 二、 安装 三、 启动虚拟机 选中Try or Install Ubuntu Server&#xff0c;按回车

数据结构与算法:图

文章目录 图1) 概念有向 vs 无向度权路径环图的连通性 2) 图的表示3) Java 表示4) DFS5) BFS6) 拓扑排序7) 最短路径DijkstraBellman-FordFloyd-Warshall 8) 最小生成树PrimKruskal 图 1) 概念 图是由顶点&#xff08;vertex&#xff09;和边&#xff08;edge&#xff09;组成…

Mysql学习笔记系列(一)

本次mysql系列不会讲解具体的查询语句&#xff0c;而是放在mysql的一些性能优化和一些特性上&#xff0c;是学习笔记&#xff0c;供大家参考补充。 慢查询 MySQL的慢查询&#xff0c;全名是慢查询日志&#xff0c;是MySQL提供的一种日志记录&#xff0c;用来记录在MySQL中响应…

Meta 标签的力量:如何利用它们提高网站的可见性(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

如何在ubuntu22.04安装ROS2

ubuntu22.04安装ROS2 教程 选择对应版本进行安装设置编码添加源安装ROS2设置环境变量 运行ROS2 选择对应版本 通过官方网站&#xff0c;查询Ubuntu与ros对应的版本&#xff0c;版本不一致也会出现安装不成功。 https://wiki.ros.org/ROS/Installation 每一个都可以进行点击&a…

解决电脑文件大小写不敏感问题

第一步&#xff1a;以管理员的身份运行 CMD 第二步&#xff1a; 输入下面命令 fsutil file setCaseSensitiveInfo 路径 enable 路径改成目标文件夹的路径&#xff0c;比如说我也下面 Less-24 这个文件夹里面的文件全部都大小写敏感 这样就 OK 了&#xff0c;注意路径最后要加…

GitFlow工作流

基于 Git 这一版本控制系统&#xff0c;通过定义不同的分支&#xff0c;探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如&#xff1a;在开发阶段&#xff0c;创建 feature 分支&#xff0c;完成需求后&#xff0c;将此分支合并到 develop 分支上&#xff1b;在发…

深度学习常用代码总结(k-means, NMS)

目录 一、k-means 算法 二、NMS 一、k-means 算法 k-means 是一种无监督聚类算法&#xff0c;常用的聚类算法还有 DBSCAN。k-means 由于其原理简单&#xff0c;可解释强&#xff0c;实现方便&#xff0c;收敛速度快&#xff0c;在数据挖掘、数据分析、异常检测、模式识别、金…

PHP+vue+Mysql家庭理财管理系统演5x6nf

本文着重阐述了收支管理系统的分析、设计与实现&#xff0c;首先介绍开发系统和环境配置、数据库的设计&#xff0c;对系统的功能需求作出分析&#xff0c;根据需求对系统进行设计&#xff0c;明确各个部分的规范&#xff0c;来完成系统的设计。最后在对设计的系统进行一系列的…

k8s1.27.2版本二进制高可用集群部署

文章目录 环境软件版本服务器系统初始化设置关于etcd签名证书etcd集群部署负载均衡器组件安装设置关于k8s自签证书自签CAkube-apiserver 自签证书kube-controller-manager自签证书kube-scheduler自签证书kube-proxy 自签证书admin 自签证书 控制平面节点组件部署**部署kube-api…

Spring 事务原理一

从本篇博客开始&#xff0c;我们将梳理Spring事务相关的知识点。在开始前&#xff0c;想先给自己定一个目标&#xff1a;通过此次梳理要完全理解事务的基本概念及Spring实现事务的基本原理。为实现这个目标我想按以下几个步骤进行&#xff1a; 讲解事务中的一些基本概念使用Sp…

x-cmd pkg | jq - 命令行 JSON 处理器

目录 简介首次用户功能特点类似工具进一步探索 简介 jq 是轻量级的 JSON 处理工具&#xff0c;由 Stephen Dolan 于 2012 年使用 C 语言开发。 它的功能极为强大&#xff0c;语法简洁&#xff0c;可以灵活高效地完成从 JSON 数据中提取特定字段、过滤和排序数据、执行复杂的转…