负载均衡中间件---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的操作系统的学习笔记&…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...