负载均衡中间件---Nginx
一.nginx的好处
学习 Nginx 对于一个全栈开发者来说是非常有价值的,下面是一些学习 Nginx 的原因和好处:
- 反向代理和负载均衡:Nginx 是一个高性能的反向代理服务器,可以用于将客户端请求转发给多个后端服务器,实现负载均衡。学习 Nginx 可以让您了解如何配置和管理反向代理和负载均衡,以提高应用程序的性能和可靠性。
- 静态文件服务:Nginx 可以用作静态文件服务器,可以帮助您有效地提供网站中的静态资源,如 HTML、CSS、JavaScript 和图像文件。学习 Nginx 可以了解如何配置和优化 Nginx 以提供静态文件,并实现网站的快速加载。
- 缓存和加速:Nginx 具有强大的缓存功能,可以缓存动态内容以提高响应速度,并减轻后端服务器的负载。学习 Nginx 的缓存功能可以帮助您改善网页响应时间,提高用户体验。
- 安全性和访问控制:Nginx 提供了许多安全性和访问控制功能,例如 SSL/TLS 加密、基于 IP 地址的访问控制、访问日志记录等。学习 Nginx 可以帮助您保护您的应用程序免受潜在的安全漏洞和恶意攻击。
- 高可用性和容错性:通过 Nginx 的高可用性和容错性特性,您可以实现应用程序的无缝扩展和故障恢复。学习 Nginx 可以帮助您了解如何配置和管理多个 Nginx 实例,以实现高可用性架构和容错机制。
- 设置虚拟主机:使用 Nginx,您可以设置和管理多个虚拟主机,即在同一台服务器上托管多个网站。学习 Nginx 可以帮助您了解如何配置和管理虚拟主机,以满足不同网站的需求。
总的来说,学习 Nginx 可以为您提供更强大的工具和技能,以管理和优化您的应用程序和网站。它可以提供更好的性能、可靠性、安全性和扩展性,对于开发和部署现代 Web 应用程序非常有帮助。
二.niginx的安装
以下的操作之前,请将防火墙进行关闭
- 关闭防火墙
systemctl stop firewalld.service
- 禁止防火墙开机启动
systemctl disable firewalld.service
- 放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重启防火墙
firewall-cmd --reload
ubantu系统安装
我的是ubantu系统要在Ubuntu系统上下载和安装Nginx,可以按照以下步骤进行操作:
- 打开终端:您可以使用快捷键Ctrl+Alt+T打开终端。
- 更新软件源:运行以下命令以更新软件源和包列表:
sudo apt update
- 安装Nginx:运行以下命令以安装Nginx:
sudo apt install nginx
需要输入sudo用户密码以及确认安装。
- 启动Nginx服务:安装完成后,Nginx服务将自动启动。如果未启动,您可以运行以下命令手动启动:
sudo systemctl start nginx
-
验证安装:打开您的Web浏览器,输入服务器的IP地址或域名,如果看到Nginx默认欢迎页面,说明Nginx已成功安装。
以下是在Ubuntu上安装Nginx时的常见文件路径: -
Nginx的配置文件目录: /etc/nginx
-
主配置文件:/etc/nginx/nginx.conf
-
网站配置文件目录:/etc/nginx/sites-available/ (网站配置文件通常位于此目录中)
-
网站启用配置文件目录:/etc/nginx/sites-enabled/ (已启用的网站配置文件通常位于此目录中)
-
Nginx的网站根目录: /var/www/html
这是默认情况下Nginx在Ubuntu上用于存储网站文件的根目录。 -
Nginx的日志文件目录: /var/log/nginx
-
访问日志文件:/var/log/nginx/access.log
8 .错误日志文件:/var/log/nginx/error.log
这时候,打开web localhost:80
就是安装成功
centos安装
要在CentOS上安装Nginx,可以按照以下步骤进行操作:
- 打开终端并使用root用户或具有sudo权限的用户登录到CentOS服务器。
- 运行以下命令以更新服务器上的软件包列表:
sudo yum update
- 安装Nginx软件包。运行以下命令:
sudo yum install nginx
在安装过程中,系统将要求您确认安装。键入“y”并按回车键继续。
4.安装完成后,可以启动Nginx服务。运行以下命令:
sudo systemctl enable nginxsudo systemctl start nginx
这将启动Nginx,并将其配置为在系统引导时自动启动。
至于Nginx的文件位置,以下是一些重要的文件和目录:
- Nginx的配置文件目录: /etc/nginx
- 主配置文件:/etc/nginx/nginx.conf
- 网站配置文件目录:/etc/nginx/conf.d/
- 默认站点配置文件:/etc/nginx/conf.d/default.conf
- Nginx的网站根目录: /usr/share/nginx/html
这是默认情况下Nginx用于存储网站文件的根目录。在此目录下,您可以将相应的网站文件和目录放置在适当的位置。 - Nginx的日志文件目录: /var/log/nginx
- 访问日志文件:/var/log/nginx/access.log
- 错误日志文件:/var/log/nginx/error.log
如果觉得麻烦,各个文件太分散了可以编译安装
编译安装
如果您希望将安装的Nginx文件集中在同一个文件夹中,而不是默认的分散位置,可以使用源代码编译安装的方式进行操作。以下是在Ubuntu上将Nginx源代码编译安装到指定文件夹的步骤:
- 首先,确保您的Ubuntu系统已安装编译Nginx所需的构建工具和依赖项。打开终端,运行以下命令以安装必要的软件包:
sudo apt update
sudo apt install build-essential zlib1g-dev libpcre3-dev libssl-dev
- 下载Nginx的源代码包。您可以从Nginx官方网站(https://nginx.org/en/download.html)获取最新的稳定版本的源代码包,或者使用以下命令下载特定版本的源代码(请将
<version>
替换为您所需的版本):
wget http://nginx.org/download/nginx-<version>.tar.gz
- 解压源代码包。运行以下命令解压下载的源代码包:
tar -zxvf nginx-<version>.tar.gz
- 进入解压后的源代码目录:
cd nginx-<version>
配置编译选项并指定安装路径。运行以下命令,将Nginx安装到指定的文件夹中,例如
./configure --prefix=/usr/local/nginx
- 执行编译和安装命令:
make
sudo make install
这将会编译Nginx并将其安装到指定的文件夹。
- 进入安装好的目录 /usr/local/nginx/sbin
没有权限的加sudo
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
此时可以再次访问nginx欢迎页面
这种方式bash运行,接下来编辑脚本运行
编写脚本
创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载系统服务
systemctl daemon-reload
启动服务
systemctl start nginx.service
开机启动
systemctl enable nginx.service
完成以后就无序在特定路径使用sh脚本启动了
卸载
因为之前为了演示演示指令网络安装,所以是默认的文件路径这样很不方便,所以采用编译安装,先卸载之前安装的
如果您使用 yum 在 CentOS 或者基于 Red Hat 的发行版上安装了 Nginx,可以使用以下命令卸载它:
sudo yum remove nginx
这将从系统中删除 Nginx 及其关联的软件包和配置文件。
如果您使用 apt 在 Ubuntu 或者基于 Debian 的发行版上安装了 Nginx,使用以下命令卸载它:
sudo apt remove nginx
根据提示卸载完成后就不会在启动了
这将删除 Nginx 及其关联的软件包和配置文件。
无论使用 yum 还是 apt 进行安装,remove 命令会删除软件包和配置文件,但是不会删除已经在安装期间创建的用户和组。
如果您希望同时删除 Nginx 创建的用户和组,可以使用 purge 命令:
sudo apt purge nginx # Ubuntu/Debian
sudo yum remove --purge nginx # CentOS/RHEL
这会完全卸载 Nginx,包括软件包、配置文件以及与之关联的用户和组。请注意,卸载 Nginx 不会删除网站根目录或日志文件等用户生成的数据,需要手动删除这些文件。
根据提示删除成功后再次访问web页面是无法到欢迎页面的
编译卸载
如果通过编译源代码的方式安装了 Nginx,可以按照以下步骤来卸载它:
- 进入到之前编译安装 Nginx 的源代码目录,一般是您下载和解压 Nginx 源代码的目录。
- 在该目录下运行以下命令,以删除之前安装的 Nginx 程序和文件:
sudo make uninstall
这将会执行之前编译安装过程中生成的 uninstall 脚本来删除已安装的文件和程序。
3 .手动删除 Nginx 配置文件、网站文件和日志文件等其他可能的残留文件。这些文件的位置和名称取决于您在配置编译选项时所设置的内容。
默认情况下,编译安装的 Nginx 的安装目录为 /usr/local/nginx/,您可以执行以下命令以删除该目录及其内容:
sudo rm -rf /usr/local/nginx/
请注意,执行 make uninstall 命令前,请确保您在之前编译安装 Nginx 源代码时使用了 make install 命令。
通过执行以上步骤,您应该能够从系统中完全卸载编译安装的 Nginx。但请注意,在卸载过程中可能会删除您自定义的配置文件和其他数据文件,因此请谨慎操作,并备份您重要的数据文件。
三.nginx的基本使用
3.1目录结构
进入之前安装的nginx目录
有三个重要的文件
conf
用来存放配置文件相关,nginx.config 配置功能都是在这里面做,然后调用外部的配置文件
html
用来存放静态文件的默认目录 html、css等
一开始进入的欢迎页就是这里的index
sbin
nginx的主程序
其他的重要的
比如logs 存放log日志其中的pid存放线程id
用于杀死线程
3.2运行原理
通过查看线程,nginx启动后启动多个进程,我们发现,master只是用于读取配置文件进行结构化协调,worker进行请求处理工作
3.3(必须掌握)nginx的配置文件
2023.9.20 停笔 明日课后继续
相关文章:

负载均衡中间件---Nginx
一.nginx的好处 学习 Nginx 对于一个全栈开发者来说是非常有价值的,下面是一些学习 Nginx 的原因和好处: 反向代理和负载均衡:Nginx 是一个高性能的反向代理服务器,可以用于将客户端请求转发给多个后端服务器,实现负…...
Linux硬链接、软链接
硬链接是一个目录条目(在基于目录的文件系统中),它将一个名称与一个文件关联起来。因此,每个文件必须至少有一个硬链接。为文件创建额外的硬链接可以使该文件的内容可以通过额外的路径访问(即通过不同的名称或在不同的目录中)这会导致别名效应(alias eff…...
React面试题总结(一)
1、redux本来是同步的,为什么它能执行异步代码?实现原理是什么?中间件的实现原理是什么? 1、Redux-thunk这个中间件支持异步操作 2、执行异步的操作首先需要下载一个thunk,通过thunk来进行异步的一个操作,支…...

一句话设计模式12:适配器模式
适配器模式: 继承原对象,持有目标对象; 文章目录 适配器模式: 继承原对象,持有目标对象;前言一、适配器模式的作用二、如何适配器模式直接上代码 总结 前言 适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用; 一…...

iOS加固保护技术:保护你的iOS应用免受恶意篡改
目录 转载:开始使用ipaguard 前言 下载ipa代码混淆保护工具 获取ipaguard登录码 代码混淆 文件混淆 IPA重签名与安装测试 转载:开始使用ipaguard 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件…...

阿里云产品试用系列-云桌面电脑
无影云电脑(WUYING Workspace),是一种易用、安全、高效的云上桌面服务。它支持快速便捷的桌面环境创建、部署、统一管控与运维。无需前期传统硬件投资,帮您快速构建安全、高性能、低成本的企业桌面办公体系。可广泛应用于具有高数…...
vue3使用vue-virtual-scroller虚拟滚动遇到的问题
安装和使用 见官方文档:https://github.com/Akryum/vue-virtual-scroller/tree/master/packages/vue-virtual-scroller 如何获取子组件的实例 背景 本来正常情况下,要获取v-for渲染的子组件的实例,通过ref绑定即可获取到数组,并…...

c#用Gnuplot画图源码
直接调用这个类即可,需要下载个GnuPlot安装下。 // Author: Leonardo Tazziniusing System; using System.Diagnostics; using System.Drawing; using System.IO; using System.Windows.Forms;/// <summary> /// Tested with Gnuplot 5.2 /// </summary&g…...
【前端设计模式】之工厂模式
工厂模式特性 工厂模式是一种创建对象的设计模式,它通过使用工厂类来封装对象的创建逻辑,隐藏了具体对象的实例化过程。工厂模式的主要特性包括: 封装对象的创建过程:工厂模式将对象的创建过程封装在一个工厂类中,客…...

Hive 的函数介绍
目录 编辑 一、内置运算符 1.1 关系运算符 1.2算术运算符 1.3逻辑运算符 1.4复杂类型函数 1.5对复杂类型函数操作 二、内置函数 2.1数学函数 2.2收集函数 2.3类型转换函数 2.4日期函数 2.5条件函数 2.6字符函数 三、内置的聚合函数 四、内置表生成函数 五、…...

【Linux基础】第31讲 Linux用户和用户组权限控制命令(三)
用户组管理命令 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同。如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组…...

html form表单高级用法
场景:想单纯使用表单内置的api完成提交,不使用js代码 代码如下: <form name"myForm" action"http://localhost:13734/form" method"post"><label>用户名<input type"text" name&qu…...
openssl升级
参考 https://www.cnblogs.com/shareHistory/p/15850707.html 下载并安装依赖 wget https://www.openssl.org/source/openssl-3.0.5.tar.gz yum -y install perl-IPC-Cmd编译安装 ./config -Wl,-rpath/usr/local/openssl/lib -fPIC --prefix/usr/local/openssl --openssldir…...

【数据结构】图的遍历:广度优先(BFS),深度优先(DFS)
目录 1、广度优先(BFS) 算法思想 广度优先生成树 知识树 代码实现 2、深度优先(DFS) 算法思想 深度优先生成树 知识树 代码实现 1、广度优先(BFS) 算法思想 图的广度优先遍历࿰…...
Mysql 学习总结(89)—— Mysql 库表容量统计
前言 统计每个库每个表的大小是数据治理中最简单的一个要求,下面从抽样统计结果及精确统计结果两方面来统计MySQL的每个库每个表的数据量情况。mysql 数据字典库 information_schema 里记录了统计的预估数据量(innodb 引擎表不准确,MyISAM 引擎表准确)及数据大小、索引大小及…...

virtualBox安装配置使用
virtualBox下载 //官网下载地址 https://www.virtualbox.org/wiki/Downloads //ubuntu下载地址 https://cn.ubuntu.com/download/server/step1 virtualBox使用 导入现有镜像 (如果报错可以降低系统配置,因为有些主机可能不支持高配置,例如…...

北斗导航 | RTD、RTK完好性之B值、VPL与HPL计算(附B值计算matlab源代码)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 1、S矩阵获取 为第i颗卫星测距标准差:...
more often than not 的含义
今天听https://www.bilibili.com/video/BV1w94y12727/?p2&spm_id_frompageDriver more often than not 连读:mor ofen than au 想了半天不动什么意思. 查了一下表示大部分情况下. 还是不理解为什么, 就查了必应里面的词典. 表示超过一半的情况下. 又自己想了想突然懂了.…...

【Linux】Linux环境配置安装
目录 一、双系统(特别不推荐) 安装双系统的缺点: 安装双系统优点(仅限老手): 二、虚拟机centos7镜像(较为推荐推荐) 虚拟机的优点: 虚拟机的缺点: …...

从零学习开发一个RISC-V操作系统(二)丨GCC编译器和ELF格式
本篇文章的内容 一、GCC(GUN Compiler Collection)1.1 GCC的命令格式1.2 GCC的主要执行步骤1.3 GCC涉及的文件类型 二、ELF简介2.1 ELF文件格式图2.2 ELF文件处理的相关工具2.3 练习 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记&…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
纯 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、…...