RHCSA上课笔记(前半部分)

第一部分 网络服务

第一章 例行性工作

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服务器基本配置
防火墙和unix关闭
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 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt文件和目录相关操作

1.相关说明 QCoreApplication类、QFile类、QDir、QTemporaryDir类、QTemporaryFile类、QFileSystemWatcher类的相关函数 2.相关界面 3.相关代码 #include "dialog.h" #include "ui_dialog.h" #include <QFileDialog> #include <QTemporaryDir>…

【JavaEE】网络原理:网络中的一些基本概念

目录 1. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 认识协议 1.4 五元组 1.5 协议分层 什么是协议分层 分层的作用 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09;模型 网络设备所在分层 网络分层对应 封装和分用 1. 网络通信基础 1.1 IP地址 概念:IP地址…

AIGC语言大模型涌现能力是幻觉吗?

Look&#xff01;&#x1f440;我们的大模型商业化落地产品&#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;关注Free三天集训营助教在线为您火热答疑&#x1f469;&#x1f3fc;‍&#x1f3eb; 在自然界中&#xff0c;涌现现象无处不在&#xff0c;从鸟群的和谐飞翔到生…

【C++】unordered_map,unordered_set模拟实现

unordered_map&#xff0c;unordered_set模拟实现 插入普通迭代器const迭代器unordered_map的[ ]接口实现查找修改哈希桶完整代码unordered_map完整代码unordered_set完整代码 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 上一篇文章我们把unordered_map和u…

基于JavaWeb+SSM+Vue基于微信小程序的网上商城系统的设计和实现

基于JavaWebSSMVue基于微信小程序的网上商城系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想…

深度剖析跨境商城源码架构,助你把握行业动向

跨境电商作为当今电商行业的热点&#xff0c;其源码架构备受关注。作为专家&#xff0c;我将深度剖析跨境商城源码架构&#xff0c;帮助你把握行业动向。 跨境商城源码架构的基本组成 跨境商城源码架构一般包括前台系统、后台管理系统、数据管理系统和安全系统四大模块。前台…

LabVIEW振动数据采集与分析系统

在这个项目中&#xff0c; LabVIEW软件配合精确的硬件组件&#xff0c;以实现高效的振动数据采集和复杂信号分析。硬件方面&#xff0c;系统采用了PCB振动加速度传感器的高灵敏度传感器&#xff0c;以及NI9234型号的数据采集卡&#xff0c;确保了数据采集的高精度和可靠性。软件…

实用干货:最全的Loading动画合集网站!复制即用

大家好&#xff0c;我是大澈&#xff01; 本文约1000字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

在进行应用开发前&#xff0c;对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的&#xff0c;会发现OpenHarmony的应用开发也很简单&#xff0c;有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构&#xff0c;以及鸿蒙对比android的诸多…

Dobbo --- HelloWorld项目搭建

Dobbo-HelloWorld 1. demo -- spring方式集成1.1 实现步骤 2. demo -- springboot方式集成2.1 实现provider2.2 实现consumer2.3 项目测试 1. demo – spring方式集成 dubbo官方文档 提供一个可被调用的接口 提供方&#xff1a;实现接口的方法逻辑&#xff0c;启动应用程序&a…

python实操之网络爬虫介绍

一、什么是网络爬虫 网络爬虫&#xff0c;也可以叫做网络数据采集更容易理解。它是指通过编程向网络服务器&#xff08;web&#xff09;请求数据&#xff08;HTML表单&#xff09;&#xff0c;然后解析HTML&#xff0c;提取出自己想要的数据。 它包括了根据url获取HTML数据、解…

介绍几个免费的国内chatgpt网站

概述&#xff1a;水点文章。 第一&#xff1a;chataa网站 chataa (chat778.com) 进去之后注册一下&#xff0c;即可免费使用。 第二&#xff1a;AlchatOS网站 AIchatOS 第三&#xff1a;ChatGPT在线聊天 ChatGPT在线聊天 (zxf7460.cn) 第四&#xff1a;说我真帅&#xff0…

【Python】--- 基础语法(1)

目录 1.变量和表达式2.变量和类型2.1变量是什么2.2变量的语法2.3变量的类型2.3.1整数2.3.2浮点数&#xff08;小数&#xff09;2.3.3字符串2.3.4布尔2.3.5其他 2.4为什么要有这么多类型2.5动态类型特征 3.注释3.1注释的语法3.2注释的规范 结语 1.变量和表达式 对python的学习就…

麒麟V10挂载iso,配置yum源

本文介绍yum 如何挂载本地镜像源 1) 拷贝镜像到本地 2) 执行以下命令&#xff1a; # mount -o loop 镜像路径及镜像名字 /mnt&#xff08;或 media&#xff09; 挂载前 挂载后 3) 进入/etc/yum.repos.d&#xff08;yum.repos.d 是一个目录&#xff0c;该目录是分析 RPM 软件…

kafka(一)——简介

简介 Kafka 是一种分布式、支持分区、多副本的消息中间件&#xff0c;支持发布-订阅模式&#xff0c;多用于实时处理大量数据缓存的场景&#xff0c;类似于一个“缓存池”。 架构 Producer&#xff1a;消息生产者&#xff1b;Consumer&#xff1a;消息消费者&#xff1b;Brok…

【Go】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁&#x1f44a; 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; byte和rune类型定义 byte,占用1个字节&#xff0c;共8个比特位&#xff0c;所以它实际上和uint8没什么本质区别,它表示…

Windows11开启SSH服务

文章目录 环境背景安装SSH服务配置SSH服务启动/停止SSH服务登录接下来参考 环境 Windows 11 家庭中文版 背景 在我的Windows电脑上&#xff0c;有些网站无法直接访问&#xff0c;所以需要通过Mac来代理。为此&#xff0c;需要创建一个位于Windows和Mac之间的SSH tunnel。 在…

【C++】vector容器接口要点的补充

接口缩容 在VS编译器的模式下&#xff0c;类似于erase和insert接口的函数通常会进行缩容&#xff0c;因此&#xff0c;insert和erase行参中的迭代器可能会失效。下图中以erase为例&#xff1a; 代码如下&#xff1a; #include <iostream> #include <vector> #inclu…

如何本地部署虚VideoReTalking

环境&#xff1a; Win10专业版 VideoReTalking 问题描述&#xff1a; 如何本地部署虚VideoReTalking 解决方案&#xff1a; VideoReTalking是一个强大的开源AI对嘴型工具&#xff0c;它是我目前使用过的AI对嘴型工具中效果最好的一个&#xff01;它是由西安电子科技大学、…

MATLAB聚类工具箱

本文借鉴了数学建模清风老师的课件与思路&#xff0c;可以点击查看链接查看清风老师视频讲解&#xff1a;【1】MATLAB聚类工具箱&#xff1a;提前预览工具箱的核心功能_哔哩哔哩_bilibili 关于工具箱的获取&#xff0c;在数学建模学习交流公众号里发送&#xff1a; 567891 %% …