Nginx入门笔记
Nginx入门笔记
- 一、Nginx基本概念
- 二、代理
- 1、正向代理
- 2、反向代理
- 三、准备工作
- 1、CentOS 7安装nginx
- (1). 安装必要的依赖
- (2)下载nginx
- (3)编译安装
- (4)编译并安装 Nginx
- (5)启动nginx
- 2、安装tomcat
- 四、反向代理与负载均衡
- 五、动静分离
- 六、高可用
- (1)准备
一、Nginx基本概念
什么是NGINX:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,有报告表明能支持50000个并发数,事实上nginx的并发能力在同类型的网页服务器中表现较好。
具体介绍可以自行查阅。
二、代理
1、正向代理

直接访问Google网站显而是不能访问通,我们需要一个能访问同的代理服务器,做过度。不能理解的话,我们可以换个直白的说法。
比如说你去租房租,你想直接找房东区租,但是呢,我又不知道房东的联系方式,这个时候,我们就需要找房产中介,他知道啊,然后就可以顺利的租到房子。(我的理解是:我想租房租,但是没有房屋主人的联系信息,找中介租到手,我知道我租的房子是谁的)。
2、反向代理

用户访问到一个网址,然后服务器将其转发给所访问的服务器。
我是这样理解:还是租房子,我找一个二房东租房,虽然我也能租到房子,但是我始终不知道这个房子是谁的(这比喻虽然有些不合理)。
三、准备工作
1、CentOS 7安装nginx
(1). 安装必要的依赖
首先,需要安装编译 Nginx 需要的依赖。打开终端并运行以下命令来安装这些依赖:
sudo yum install -y gcc-c++ make zlib-devel pcre-devel openssl-devel
gcc-c++ 和 make 是编译工具。
zlib-devel、pcre-devel 和 openssl-devel 是 Nginx 处理 HTTP 请求所需的库的开发包。
注:要是提示
Cannot find a valid baseurl for repo: base/7/x86_64
Yum是CentOS系统中用于安装、更新和删除软件包的重要工具。然而,由于CentOS 7官方支持已于2024年结束,许多依赖的仓库和镜像源也随之停止更新,导致Yum命令频繁出现错误,如“Could not resolve host: mirrorlist.centos.org”或“Unknown error”。
阿里云提供了稳定的CentOS镜像源,可以通过修改CentOS-Base.repo文件来使用阿里云源。简便的方法就是:
cd /etc/yum.repos.d/
curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache
然后先 yum update 一下,在执行上方的安装操作。
(2)下载nginx
mkdir /opt/nginx
cd /opt/nginx
wget http://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2
(3)编译安装
在编译前,你可以使用 ./configure 脚本来定义安装选项,比如安装路径、启用的模块等。
./configure --prefix=/usr/local/nginx --with-http_ssl_module
这个命令将 Nginx 安装到 /usr/local/nginx 目录,并且启用了 HTTPS 支持。根据你的需求,你可能需要添加或删除 ./configure 脚本的选项。
(4)编译并安装 Nginx
make
make install
(5)启动nginx
./usr/local/nginx/sbin/nginx
查看启动状态


要是没能访问通,应该是没开放端口:
查看防火墙端口:
# 查看端口
firewall-cmd --list-ports
# 开放端口,这里建议开放80,8080,8081,9001等端口,接下来用得到
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload
我们将它配置成全启动操作:
ln -s /opt/nginx/nginx-1.26.2/sbin/nginx /usr/local/bin/
2、安装tomcat
可以查看该文章:jdk和tomcat安装教程
四、反向代理与负载均衡
启动tomcat服务器,这里我把tomcat服务器配置了两个一个8080端口,一个8081端口

配置nginx.conf
cd /usr/local/nginx/conf/nginx.confupstream myserver {
# 还可以为其添加权重,这样就是用到了负载均衡,不加的话就是均分server localhost:8080 weight=5;server localhost:8081 weight=2;
}# 在http添加
server {listen 9001;server_name localhost;charset utf-8;# 示例一location ~ /nginx/ {proxy_pass http://localhost:8080;}# 示例二location / {
# proxy_pass http://myserver;}
}
这里直接访问9001,就被反向到了各自的服务

五、动静分离
将静态资源放在一个服务器直接访问。
六、高可用
其中一台nginx服务器挂了另一个立刻接手。

(1)准备
两台服务器,分别安装nginx,keepalived
nginx前边已经安装过,不多说,安装keepalived
yum install keepalived -y
两台都安装上
修改keepalived配置文件:

vi keepalived.conf

第一个框先不说,第二个
| 字段 | 值 | 说明 |
|---|---|---|
| state | BACKUP | BACKUP:从服务,MASTER:主服务 |
| interface | ens33 | 自己的网络,可以使用Ip addr查看 |
| virtual_router_id | 51 | 两个服务配置一至 |
| priority | 90 | 权值,主服务高一些,从服务低一些 |
| virtual_ipaddress | 虚拟ip | 访问的IP两个服务配置一样(注意一点,我的当时直接写了一个导致无法方通,后来改了一个和我的服务器IP顺序的通行了) |
第一个框中我们需要配置一个script文件:
nginx_check.sh
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx # nginx安装路径sleep 2if [ `ps -C nggx -no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi
做好这些就可以启动服务了
启动两个tomcat服务:
./startup.sh # 8080, 8081
启动nginx服务
nginx # ip1, ip2
启动keepalived
systemctl start keepalived.service
然后就可以直接使用虚拟ip访问了:

接下来我模拟主服务挂机了
nginx -s stop
再访问依旧可以访问。
相关文章:
Nginx入门笔记
Nginx入门笔记 一、Nginx基本概念二、代理1、正向代理2、反向代理 三、准备工作1、CentOS 7安装nginx(1). 安装必要的依赖(2)下载nginx(3)编译安装(4)编译并安装 Nginx(5)启动nginx …...
【单片机】实现一个简单的ADC滤波器
实现一个 ADC的滤波器,PT1 滤波器(也称为一阶低通滤波器),用于对输入信号进行滤波处理。 typedef struct PT1FilterSettings PT1FilterSettings; struct PT1FilterSettings {//! last Filter output valueuint32_t filtValOld;//…...
开源 vGPU 方案 HAMi 解析
开源 vGPU 方案 HAMi 一、k8s 环境下 GPU 资源管理的现状与问题 (一)资源感知与绑定 在 k8s 中,资源与节点紧密绑定。对于 GPU 资源,我们依赖 NVIDIA 提供的 device-plugin 来进行感知,并将其上报到 kube-apiserver…...
备考蓝桥杯:顺序表详解(静态顺序表,vector用法)
目录 1.顺序表的概念 2.静态顺序表的实现 总代码 3.stl库动态顺序表vector 测试代码 1.顺序表的概念 要理解顺序表,我们要先了解一下什么是线性表 线性表是n个具有相同特征的数据元素的序列 这就是一个线性表 a1是表头 a4是表尾 a2是a3的前驱 a3是a2的后继 空…...
OA系统如何做好DDOS防护
OA系统如何做好DDOS防护?在数字化办公蔚然成风的当下,OA(办公自动化)系统作为企业内部管理与协作的神经中枢,其安全性和稳定性直接关系到企业的日常运营效率、信息流通效率以及长远发展。OA系统不仅承载着企业内部的日…...
使用 Python 的 pyttsx3 库进行文本转语音
1. 什么是 pyttsx3? 1.1 pyttsx3 是一个 Python 库,它可以将文本转换为语音。与其他文本转语音库(如 gTTS)不同,pyttsx3 不依赖于网络服务,它使用本地的 TTS(Text-to-Speech)引擎&a…...
如何在Windows上编译OpenCV4.7.0
前言 参考:Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d 这里在其基础上还出现了一些问题,仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件: 通…...
【玩转全栈】----Django连接MySQL
阅前先赞,养好习惯! 目录 1、ORM框架介绍 选择建议 2、安装mysqlclient 3、创建数据库 4、修改settings,连接数据库 5、对数据库进行操作 创建表 删除表 添加数据 删除数据 修改(更新)数据: 获取数据 1、OR…...
25/1/4 算法笔记<强化学习> 生成对抗模仿学习
基于生成对抗网络的模仿学习,假设存在一个专家智能体,其策略可以看成最优策略,我们就可以通过直接模仿这个专家在环境中交互的动作数据来训练一个策略,并不需要用到环境提供的奖励信息。 生成对抗模仿学习GAIL实质上就是模仿了专家…...
Flink维表方案选型
Iceberg Iceberg 采用全量预加载数据的方式将维度表数据全部加载到内存中进行关联,虽然可以避免频繁访问外部数据库,但对计算节点的内存消耗很高,不能适用于数量很大的维度表。除此之外,当 Iceberg 维表数据更新后,可…...
Oracle Database 23ai 新特性: UPDATE 和 DELETE 语句的直接联接
Oracle Database 23c 引入了一系列令人振奋的新特性,其中一项尤为引人注目的是对 UPDATE 和 DELETE 语句支持直接联接(Direct Join)。这一新功能极大地简化了复杂数据操作的实现,提升了性能,并为数据库开发者提供了更强…...
机器学习之随机森林算法实现和特征重要性排名可视化
随机森林算法实现和特征重要性排名可视化 目录 随机森林算法实现和特征重要性排名可视化1 随机森林算法1.1 概念1.2 主要特点1.3 优缺点1.4 步骤1.5 函数及参数1.5.1 函数导入1.5.2 参数 1.6 特征重要性排名 2 实际代码测试 1 随机森林算法 1.1 概念 是一种基于树模型的集成学…...
网络安全图谱以及溯源算法
本文提出了一种网络攻击溯源框架,以及一种网络安全知识图谱,该图由六个部分组成,G <H,V,A,E,L,S,R>。 1|11.知识图 网络知识图由六个部分组成,…...
单片机-外部中断
中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B,请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被中断的…...
《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》
《解锁计算机视觉智慧:编程实现图片场景文字描述的开源宝藏》 一、MiniGPT-4:小模型撬动大视觉理解(一)项目概览(二)核心亮点(三)上手体验 二、ClipCap-Chinese:中文场景…...
onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制
文章目录 1. 页面跳转方式2. 你的场景分析3. 页面生命周期4. 总结5. 建议 在微信小程序中,页面跳转时, onLoad 生命周期函数是否执行取决于跳转的方式和小程序的页面栈管理机制。以下是详细说明: 1. 页面跳转方式 微信小程序提供了多种页面…...
Visio 画阀门 符号 : 电动阀的画法
本篇文章介绍阀门,很多朋友在利用Visio绘画管道流程简图时,需要进行阀门符号的绘画,而Visio提供的阀门符号种类并不是很齐全。 本篇文章给出电动阀的画法: 下图是液动阀的符号: 首先,找到“更多形状”中的…...
OOM排查思路
K8S 容器的云原生生态,改变了服务的交付方式,自愈能力和自动扩缩等功能简直不要太好用。 有好的地方咱要夸,不好的地方咱也要说,真正的业务是部署于容器内部,而容器之外,又有一逻辑层 Pod 。 对于容器和…...
《Spring Framework实战》10:4.1.4.2.详细的依赖和配置
欢迎观看《Spring Framework实战》视频教程 集合 <list/>、<set/>、<map/>和<props/>元素分别设置Java集合类型list、set、map和properties的属性和参数。以下示例显示了如何使用它们: <bean id"moreComplexObject" class&qu…...
网络安全-XSS跨站脚本攻击(基础篇)
漏洞扫描的原理 1.跨站脚本攻击介绍 xss跨站脚本攻击: xSS 全称(Cross site Scripting )跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2013/2017年度分别为第三名和第七名,XSS是指攻…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
