RHCE-Web-nginx http实验和nginx https实验
一、web服务器简介
(1)什么是www
(2)网址及HTTP简介
http响应报文由起始行、响应头部、空行和响应报文主体这几个部分组成

(3)http协议请求的工作流程
二、web服务器的类型
(1)仅提供用户浏览的单向静态网页
(2)提供用户互动接口的动态网站
三、web服务器基本配置
[root@localhost ~]# dnf install nginx -y
[root@localhost ~]# nginx -v
[root@localhost ~]# nginx -V
[root@localhost ~]# rpm -ql nginx
[root@localhost httpd]# tree /etc/nginx
[root@localhost ~]# tree /etc/nginx/
/etc/nginx/
├── conf.d #子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params #用以翻译nginx的变量供php识别
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types #用以配置支持的媒体文件类型
├── mime.types.default
├── nginx.conf #主配置文件
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params #用以配置nginx的变量供python识别
├── uwsgi_params.default
└── win-utf
[root@localhost ~]# tree /usr/share/nginx/html/ #默认的nginx网站根目录
[root@localhost ~]# tree /var/log/nginx/ #nginx的日志文件所在目录 #nginx服务主配置文件nginx.conf的结构
[root@localhost nginx]# grep ^[^#] /etc/nginx/nginx.conf
=========全局配置(无{}标志)=======================
user nginx; #进程所属用户
worker_processes auto; #worker数量
1
2
3
4
5
error_log /var/log/nginx/error.log; #错误日志存放路径
pid /run/nginx.pid; #pid文件路径
include /usr/share/nginx/modules/*.conf; #include导入的功能模块配置文件
=========全局配置(无{}标志)=======================
==========性能配置(有{}标志)=================
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;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf; #子配置文件存放路径
server { #server区块开始
listen 80; #监听端口
listen [::]:80;
server_name _; #服务器的名字
root /usr/share/nginx/html; #主页存放路径
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; #子配置文件存放路径
error_page 404 /404.html; #404错误返回的页面
location = /40x.html { #使用location定义用户请求的uri
}
error_page 500 502 503 504 /50x.html; #500、502、503、504返回的页面
location = /50x.html {
}
} #server区块结束
} #http区块结束
=========http模块配置(有{}标志)================== [root@localhost ~]#systemctl disable firewalld --now
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# systemctl restart nginx
#测试可以使用curl命令访问web服务器或者使用浏览器访问
[root@localhost ~]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Fri, 17 Nov 2023 08:40:28 GMT
Content-Type: text/html
Content-Length: 3510
Last-Modified: Mon, 23 Oct 2023 15:48:29 GMT
Connection: keep-alive
ETag: "653695cd-db6"
Accept-Ranges: bytes 四、虚拟主机配置实战
1.搭建静态网站——基于http协议的静态网站
[root@service ~]# echo "hello world" > /usr/share/nginx/html/index.html
[root@service ~]# curl service
hello world
[root@service ~]# curl 192.168.36.136
hello world
2.建立两个基于ip地址访问的网站
要求如下:
1.添加网卡ens33并添加IP地址(192.168.36.100 、192.168.36.200)
nmtui





最好重启一下虚拟机!
#激活网卡ens33
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
2.创建两个网页文件根目录,并定义网页内容
[root@service ~]# mkdir -pv /www/ip/{100,200}
[root@service ~]# echo this is 100 > /www/ip/100/index.html
[root@service ~]# echo this is 200 > /www/ip/200/index.html
3.设置selinux,必须设置,否则无法看到网页页面内容
[root@service ~]# setenforce 0
[root@service ~]# getenforce
Permissive
4.定义基于不同ip地址来访问网站的配置文件
[root@service ~]# vim /etc/nginx/conf.d/test_ip.conf
[root@service ~]# cat /etc/nginx/conf.d/test_ip.conf
server {listen 192.168.36.100:80;root /www/ip/100;location / {}
}server {listen 192.168.36.200:80;root /www/ip/200;location / {}
}
5.重启nginx服务并验证效果
[root@service ~]# systemctl restart nginx.service
[root@service ~]# curl 192.168.36.100
this is 100
[root@service ~]# curl 192.168.36.200
this is 200
两个基于ip地址访问的网站建立成功!
3.建立两个基于不同端口访问的网站
要求如下:
[root@service ~]# mkdir -pv /www/port/{80,10000}
mkdir: 已创建目录 '/www/port'
mkdir: 已创建目录 '/www/port/80'
mkdir: 已创建目录 '/www/port/10000'
[root@service ~]# echo the port is 80 > /www/port/80/index.html
[root@service ~]# echo the port is 10000 > /www/port/10000/index.html
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.153/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@service ~]# vim /etc/nginx/conf.d/test_port.conf
[root@service ~]# cat /etc/nginx/conf.d/test_port.conf
server {listen 192.168.36.153:80;root /www/port/80;location / {}
}server {listen 192.168.36.153:10000;root /www/port/10000;location / {}
}[root@service ~]# systemctl restart nginx.service
[root@service ~]# curl 192.168.36.153
the port is 80
[root@service ~]# curl 192.168.36.153:10000
the port is 10000
4.建立两个基于域名访问的网站
要求如下:
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.154/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@service ~]# mkdir /www/{name,ce}
[root@service ~]# echo this is test > /www/name/index.html
[root@service ~]# echo today is first day of class > /www/ce/index.html
[root@service ~]# vim /etc/nginx/conf.d/test_servername.conf
[root@service ~]# cat /etc/nginx/conf.d/test_servername.conf
server {listen 192.168.36.154:80;server_name www.ceshi.com;root /www/name;location / {}
}
server {listen 192.168.36.154:80;server_name rhce.first.day ce.first.day;root /www/ce;location / {}
}[root@service ~]# vim /etc/hosts
[root@service ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.36.154 www.ceshi.com rhce.first.day ce.first.day
[root@service ~]# systemctl restart nginx.service
[root@service ~]# curl www.ceshi.com
this is test
[root@service ~]# curl rhce.first.day
today is first day of class
[root@service ~]# curl ce.first.day
today is first day of class
5.基于虚拟目录和用户控制的web网站
1.虚拟目录实现
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.155/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@service ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
[root@service ~]# cat /etc/nginx/conf.d/test_virtualdir.conf
server {listen 192.168.36.155:80;root /usr/share/nginx/html;location /real {alias /www/real;}
}
[root@service ~]# mkdir /www/real/
[root@service ~]# echo real-virtual > /www/real/index.html
[root@service ~]# systemctl restart nginx.service
[root@service ~]# curl 192.168.36.155/real/
real-virtual
2.用户访问控制
[root@client ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
[root@client ~]# cat /etc/nginx/conf.d/test_virtualdir.conf
server {listen 192.168.36.155:80;root /usr/share/nginx/html;location /real {alias /www/real;auth_basic on;auth_basic_user_file /etc/nginx/conf.d/auth-password;}
}
[root@client ~]# dnf install httpd-tools -y
[root@client ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1 123456
Adding password for user user1
[root@client ~]# systemctl restart nginx.service
[root@client ~]# curl 192.168.36.155/real/
real-virtual
[root@client ~]# curl 192.168.36.155/real/ -u user1
Enter host password for user 'user1':
real-virtual
[root@client ~]# curl user1:123456@192.168.36.155/real/
real-virtual
6.搭建静态网站——基于https协议的静态网站
(1)https简介
(2)https协议加密所使用的算法
(3)浏览器访问https网站的通信过程
(4)https网站配置
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.156/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
[root@service ~]# mkdir -pv /www/https/
mkdir: 已创建目录 '/www/https/'
[root@service ~]# echo https > /www/https/index.html
[root@service ~]# cd /etc/pki/tls/certs/
[root@service certs]# openssl genrsa -out https.key
[root@service certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
[root@service certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cs
State or Province Name (full name) []:cs
Locality Name (eg, city) [Default City]:cs
Organization Name (eg, company) [Default Company Ltd]:cs
Organizational Unit Name (eg, section) []:cs
Common Name (eg, your name or your server's hostname) []:cs
Email Address []:123@cs.com
[root@service certs]# vim /etc/nginx/conf.d/test_https.conf
[root@service certs]# cat /etc/nginx/conf.d/test_https.conf
server {# listen 80;listen 192.168.36.156:443 ssl;root /www/https;ssl_certificate /etc/pki/tls/certs/https.crt;ssl_certificate_key /etc/pki/tls/certs/https.key;location / {}
}
[root@service certs]# systemctl restart nginx.service
[root@service certs]# curl --insecure https://192.168.36.156
https
[root@service certs]# curl -k https://192.168.36.156
https
7.搭建动态网站
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.157/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)
[root@service ~]# dnf install php php-fpm -y
[root@service ~]# systemctl restart nginx php-fpm
[root@service ~]# echo "?php phpinfo(); ?" > /usr/share/nginx/html/index.php
#使用浏览器访问 相关文章:
RHCE-Web-nginx http实验和nginx https实验
一、web服务器简介 (1)什么是www www 是 world wide web 的缩写,也就是全球信息广播的意思。通常说的上网就是使用 www 来查询用户 所需要的信息。 www 可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的…...
少儿编程学习现状洞察:青少年编程教育需求与学习频率分析
随着少儿编程教育的逐渐普及,越来越多的家庭开始关注孩子在编程学习中的表现。根据最新数据,90%的少儿编程学员保持每周至少一节课的学习频率,而95%的编程课程都安排在周末。特别是在8岁、10岁、12岁及15岁以上的年龄层次,孩子的学…...
接口集成、快速对接-阿里身份证实名认证接口
身份证实名认证接口现已被应用在联网的各种业务场景中,如电商、在线教育、银行等等,下面以电商平台为例,列举翔云身份证实名认证接口在电商平台中的具体应用和优势。 电商平台的出现方便了人们的生活,进行电商的实名认证有助于提高…...
HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
在为您的应用程序选择通信协议时,有很多不同的选择。 本文将了解四种流行的解决方案:HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进:变得更快、更方便、更可靠&…...
Unity3D学习FPS游戏(8)装弹和弹夹UI显示
前言:实现了武器的基本发射功能,但是我们弹夹数量是有限,之前并没有做装弹和弹夹显示的功能。本篇实现装弹和弹夹显示。 装弹和弹夹UI显示 装弹目标思路和实现 弹夹UI显示目标弹夹UI的思路和实现UI代码的思路和实现 武器控制的完整代码效果补…...
Android 托管 Github Action 发布 Github Packages ,实现 Mvn 免费自动化托管
自从多年前 JCenter 关闭服务之后,GSY 项目版本就一直发布在 Jitpack 上,如今每个月也都有大概 10w 左右下载,但是近年来时不时就会出现历史版本丢失的问题,而且有时候还不是某个具体版本丢失,而是版本里的某几个依赖突…...
火山引擎VeDI数据服务平台:在电商场景中,如何解决API编排问题?
01 平台介绍 数据服务平台可以在保证服务高可靠性和高安全性的同时,为各业务线搭建数据服务统一出口,促进数据共享,为数据和应用之间建立了一座“沟通桥梁”。 同时,解决数据理解困难、异构、重复建设、审计运维困难等问题&#x…...
【每日C/C++问题】
一、 结构体和联合体有什么区别?能否在声明过程当中缺省名字?(需要写清楚使用方法) 结构体的各个成员占用不同的内存空间,总大小是所有成员大小之和(结构体字节对齐): typedef str…...
layaair做帧动画,等待一秒之后移动坐标,坐标位置明明相同,执行的时候却会抖动。
如下图:我将1秒后面的位置与0秒的坐标位置设置为一样,然后再第二秒的时候再设置位置移动。也就是想实现这个效果,小狗先停在这里一秒,然后再开始行走。现在的问题是停在这里依然抖动一下,也就是根本就停不住。还是会变…...
SAP分包业务中能否应用后继物料?
近期物流用户在工作中遇到新的问题。在分包业务中的原材料后继(物料主数据设定非连续标识及后继物料)不成功问题。对于未知应用,需要先研究期可行性,与问题或故障不同,如果系统本身就不支持,再多分析测试也…...
【数据结构】二叉树——判断是否为完全二叉树
一、思路 有完全二叉树的解释 我们想要判断二叉树是否为完全二叉树 我们可以用队列来实现 我们先将根节点入队列 再将根节点出队列,判断取出节点是否为空、 若不为空将该节点的左右节点入队列 左右节点为空也入队列 若为空则停止入队列 然后判断队列中是否有 NUL…...
FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,
在前面,我们总结一下前面的代码。 在 FactoryModeForAVFrameShowSDL 构造函数中 init SDL。 通过 QT timerevent机制,通过startTimer(10);每隔10ms,就会调用timerEvent事件。 在timerEvent事件中,真正的去 读取数据,…...
近百万奖金!2024 Web3.0 创新大赛重磅来袭!
10月30日,中国互联网协会与香港Web3.0协会共同组织举办的2024 Web3.0 创新大赛在上海举行启动会,宣布大赛正式在DataFountain竞赛平台(简称DF平台,http://www.datafountain.cn)启动上线。 大赛面向社会各界征集参赛团队…...
gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
背景介绍 gRPC 是一种现代开源高性能远程过程调用 (RPC) 可以在任何环境中运行的框架。它可以有效地连接服务 在数据中心内和数据中心之间,具有对负载平衡、跟踪、 运行状况检查和身份验证。它也适用于最后一英里 分布式计算,用于…...
cmake系列-怎么构建不同的C++程序目标文件(可执行程序、动态库、静态库)
目录 生成可执行程序生成动态库生成静态库 我们编写的C代码不仅仅只是为了生成可执行程序,有的时候可能是为了生成动态库或者静态库,那么如果用cmake来构建的话,应该怎么做呢,怎么指定是生成可执行程序,还是生成动态库…...
使用ffmpeg和mediamtx模拟多通道rtsp相机
首先下载ffmpeg,在windows系统上直接下载可执行文件,并配置环境变量即可在命令行当中调用执行。 下载地址: https://ffmpeg.org/再在github上下载mediamtx搭建rtsp服务器,使用ffmpeg将码流推流到rtsp服务器。 下载地址࿱…...
windows系统类似于linux的nohup命令后台启动jar服务
一、首先新建一个后缀名为.bat文件 二、将jar包放在与jar包同一个路径下 三、编写.bat文件 echo off start javaw -Xms512m -Xmx1024m -XX:PermSize256m -XX:MaxPermSize512m -XX:MaxNewSize512m -jar xxxxx-22900.jar >> StartupLog.log 2>&1 & exit 四…...
2024 Rust现代实用教程 流程控制与函数
文章目录 一、if流程控制与match模式匹配1.流程控制2. IF流程控制3.match 表达式 二、循环与break continue以及与迭代的区别1.Rust中的循环Loops2.break && continue3.迭代4.循环与迭代的不同 三、函数基础与Copy值参数传递1.函数的基础知识2.Copy by value 四、函数值…...
stm32入门教程--USART外设 超详细!!!
目录 简介 什么是UART? 什么是USART? 简介 USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧…...
再探“构造函数”(2)友元and内部类
文章目录 一. 友元‘全局函数’作友元‘成员函数’作友元‘类‘作友元 内部类 一. 友元 何时会用到友元呢? 当想让(类外面的某个函数/其它的类)访问 某个类里面的(私有或保护的)内容时,可以选择使用友元。 友元提供了一种突破&a…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

