(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令
目录
🎫 前言
🎉 开篇福利
🎁 开篇福利 x2 Double happiness
# 介绍
# 地址
# 下载
💻 命令及解析
# 整个文件系统中搜索名为nginx.conf的文件
# 编辑nginx.conf文件
# 重新加载配置文件
# 快速查找nginx.conf文件并使用vim编辑器打开它
# 默认80端口代理配置
# 设置一个简单的代理服务器
# 反向代理
# 负载均衡
## RR策略
## 权重
## ip_hash
## fair(第三方)
## url_hash(第三方)
## rewrite
# 压缩和解压缩
🎫 前言
1. nginx官网地址:nginx news
2. 实践以下代码功能,需要服务器
方案a. 虚拟机 : 参阅 http://t.csdnimg.cn/Y7QYA
方案b. 云服务器:参阅 http://t.csdnimg.cn/iRkv3
3. 阿里云 云服务器 ECS 购买直达:云小站_专享特惠_云产品推荐-阿里云
🎉 开篇福利
vscode可安装 nginx-formatter 插件
创建一个 nginx.conf 文件
在linux系统中,使用FinalShell工具SSH链接服务器,查看 nginx.conf 文件内容
sudo cat /etc/nginx/nginx.conf
复制到本地 nginx.conf 文件中,对其代码右键,选择 使用...格式化文档
选择 nginx-formatter
这样看起来就舒服多了,也可以在本地编辑好之后写入到服务中。
🎁 开篇福利 x2 Double happiness
# 介绍
NGINX 配置配置高性能、安全、稳定的NGINX服务器的最简单方法。
# 地址
NGINXConfig | DigitalOcean
# 下载
下载 生成的配置: nginxconfig.io-example.com.tar.gz
然后 上传 到你的服务器的 /etc/nginx 目录.
或, 复制压缩配置的base64字符串,将其粘贴到服务器的命令行并执行。
a.进入你的 NGINX服务器上的配置目录:
cd /etc/nginx
b.创建当前NGINX配置的备份:
tar -czvf nginx_$(date +'%F_%H-%M-%S').tar.gz nginx.conf sites-available/ sites-enabled/ nginxconfig.io/
c.使用tar解压新的压缩配置
tar -xzvf nginxconfig.io-example.com.tar.gz | xargs chmod 0644
💻 命令及解析
# 整个文件系统中搜索名为nginx.conf的文件
sudo find / -name "nginx.conf"
# 编辑nginx.conf文件
vim /etc/nginx/nginx.conf
# 重新加载配置文件
nginx -s reload# windows
nginx.exe -s reload
# 快速查找nginx.conf文件并使用vim编辑器打开它
find /etc/nginx -name "nginx.conf" -exec vim {} \;
# 默认80端口代理配置
# 访问 https://www.example.com/,nginx指向服务端的/www/wwwroot目录,并寻找index.html文件。
# 访问 https://www.example.com/images/example.jpg,nginx指向服务端的/www/images目录,并寻找example.jpg文件。http {server {location / {root /www/wwwroot;}location /images/ {root /www;}}
}
# 设置一个简单的代理服务器
# 新服务(服务处理)
server {listen 8080;root /www/wwwroot;location / {}
}# 代理配置,数据转发
server {location / {proxy_pass http://localhost:8080;}location ~ \.(gif|jpg|png)$ {root /www/images;}
}
# 反向代理
server { listen 80; server_name localhost; client_max_body_size 1024M;location / {proxy_pass http://localhost:8080;proxy_set_header Host $host:$server_port;}
}
# 负载均衡
## RR策略
upstream vinca {server localhost:8080;server localhost:8081;
}
server {listen 81;server_name localhost;client_max_body_size 1024M;location / {proxy_pass http://vinca;proxy_set_header Host $host:$server_port;}
}
## 权重
upstream vinca {server localhost:8080 weight=9;server localhost:8081 weight=1;
}
- 在Nginx的upstream块中,weight参数用于指定服务器的权重。权重越高,服务器在负载均衡时被选中的概率就越大。
- 示例中,upstream块定义了名为"vinca"的后端服务器组,其中包含了2个服务器。第一个服务器的配置:server localhost:8000 weight=9;
- 这里的weight=9表示该服务器的权重是9。而另外一个服务器没有显式的指定权重,因此它们的默认权重为1。
- 在请求分发时,Nginx会根据服务器的权重比例来选择哪个服务器处理请求。由于第一个服务器的权重是9,而其他服务器的权重是默认的1,所以第一个服务器被选中的概率要高于另外一个服务器。
- 通过调整服务器的权重,可以在负载均衡时实现更为精细的控制,将请求按照一定比例分配给不同的服务器。
## ip_hash
upstream vinca {ip_hash;server localhost:8080;server localhost:8081;
}
- 在上述示例中,ip_hash是Nginx的负载均衡算法之一。它的作用是基于客户端IP地址来实现会话粘性(Session Affinity),也称为IP哈希负载均衡。
- 当使用ip_hash时,Nginx通过计算客户端IP地址的哈希值,将每个请求分配给一台服务器。一旦确定了一个客户端请求应该被分派到的特定服务器,后续该客户端的所有请求都将被发送到同一台服务器上,从而实现会话的保持。
- 这在某些情况下非常有用,例如当你的应用程序需要确保用户的会话状态始终保持在同一台后端服务器上时。通过使用ip_hash,可以确保同一IP地址的客户端请求都被分发到相同的后端服务器,从而避免了会话状态的丢失。
- 需要注意的是,ip_hash算法可能会导致负载不均衡的问题,因为某些IP地址可能会产生更多的请求。如果你的后端服务器能够处理不同IP地址之间的请求不平衡,并且你需要确保会话粘性,那么ip_hash是一个可行的负载均衡选择。
## fair(第三方)
upstream backend {fair;server localhost:8080;server localhost:8081;
}
- 在这段代码中,upstream块定义了一个名为"backend"的后端服务器组。同时使用了fair参数,这表明Nginx将使用fair模块来进行负载均衡。
- fair模块是Nginx的第三方扩展模块,它提供了一种称为"fair load balancing"的负载均衡算法。fair load balancing算法旨在更加公平地分配请求到后端服务器,而不是简单地根据权重或者轮询来进行分发。
- fair模块会考虑每个后端服务器的当前连接数和响应时间等因素,以便更合理地分配负载。具体来说,fair模块会根据服务器的响应时间和连接数动态地调整请求的分发,以确保每台服务器都能获得相对公平的负载。
- 通过使用fair,你可以让Nginx在进行负载均衡时更加智能地考虑每台服务器的负载情况,从而提高系统的性能和稳定性。
- 需要注意的是,fair模块并非Nginx自带的标准模块,它是一个可选的第三方模块,因此在使用前需要确保该模块已经被正确编译并加载到Nginx中。
## url_hash(第三方)
upstream backend {hash $request_uri;hash_method crc32;server localhost:8080;server localhost:8081;
}
这段Nginx配置代码定义了一个名为"backend"的后端服务器组。它使用了hash指令来进行负载均衡,并指定了哈希算法和哈希键。
具体解释如下:
- hash $request_uri;:这行代码指定了使用$request_uri作为哈希键。每个请求的URI将被计算哈希值,以决定将请求发送到哪台后端服务器。
- hash_method crc32;:这行代码指定了使用CRC32算法作为哈希算法。CRC32是一种快速的哈希算法,用于计算请求URI的哈希值。
- server localhost:8080;和server localhost:8081;:这两行代码定义了两台后端服务器的地址和端口。
通过使用哈希负载均衡,可以根据请求的URI将请求分发到后端服务器。相同URI的请求将始终被分发到相同的后端服务器,这有助于在缓存中提高命中率,并实现会话粘性。
注意事项:
- 使用哈希负载均衡时,必须小心选择哈希键。选择不合适的哈希键可能导致负载不均衡,因为某些URI可能会更频繁地访问。
- 如果后端服务器的数量发生变化(增加或减少),哈希负载均衡可能会导致请求分布不均匀。在这种情况下,需要考虑重新平衡或调整哈希键的选择。
- 哈希负载均衡可能会导致请求集中于少数后端服务器,而其他服务器的负载较轻。这可能会对系统的性能和可扩展性产生影响,因此需要根据实际情况进行评估和调整。
- 请确保CRC32哈希算法已经编译到你的Nginx版本中,否则可能需要重新编译或选择其他可用的哈希算法。
总结:哈希负载均衡是一种根据请求URI进行分发的方法,可以在特定情况下提供更好的性能和会话粘性。但在使用时需谨慎选择哈希键,并根据实际情况进行评估和调整。
## rewrite
当需要为不同设备(如PC端和移动端)定制不同的页面重定向时,可以使用Nginx的rewrite模块来实现。以下是一个简单易懂的PC端和移动端重写方案:
server {listen 80;server_name example.com;# PC端重定向规则location / {if ($http_user_agent ~* (android|iphone|ipad)) {# 移动端访问,重定向到移动端页面rewrite ^(.*)$ /mobile$1 last;}# PC端访问,保持原样}# 移动端重定向规则location /mobile {# 处理移动端页面请求}
}
1. listen 80;:监听80端口,接收HTTP请求。
2. server_name example.com;:配置服务器名,替换成实际的域名。
3. PC端重定向规则:
- location /:匹配所有请求。
- if ($http_user_agent ~* (android|iphone|ipad)):使用$http_user_agent变量检查用户代理,判断是否为移动设备。
- rewrite ^(.*)$ /mobile$1 last;:如果是移动设备访问,则重写URL,在请求路径前加上"/mobile",并使用last标志表示终止当前location的处理。
4.移动端重定向规则:
- location /mobile:匹配以/mobile开头的请求,用于处理移动端页面请求。
代码配置中,当用户通过移动设备访问网站时,Nginx会根据用户代理信息判断其为移动设备,然后重写URL以将请求路由到/mobile路径下,从而展示移动端页面。对于PC端访问,则保持原样,不做任何重定向处理。
需要注意的是,使用rewrite时要谨慎考虑正则表达式的匹配和重写规则,避免出现意外的行为。此外,对于移动端重定向,也可以使用Nginx的map模块结合变量来实现更灵活的设备识别和重定向规则。
# 压缩和解压缩
http {gzip on; # 开启gzip压缩功能gzip_min_length 1000; # 设置最小压缩文件大小gzip_types text/plain text/css application/javascript; # 设置需要进行gzip压缩的文件类型gzip_proxied any; # 启用所有可能的gzip压缩代理server {listen 80;server_name example.com;location / {# 处理请求}location /compressed {gunzip on; # 允许对请求进行解压缩# 处理解压缩后的请求}}
}
- gzip on;:开启gzip压缩功能。启用后,Nginx会自动对符合条件的响应内容进行gzip压缩。
- gzip_min_length 1000;:设置最小压缩文件大小。仅当响应内容长度大于或等于1000字节时,才会进行压缩。
- gzip_types text/plain text/css application/javascript;:设置需要进行gzip压缩的文件类型。这里配置了常见的文本文件和JavaScript文件类型。
- gzip_proxied any;:启用所有可能的gzip压缩代理。这样可以确保在与反向代理或负载均衡等情况下仍能正确压缩响应内容。
- location /compressed:匹配以/compressed开头的请求路径。
- gunzip on;:允许对请求进行解压缩。在该location中,Nginx会自动解压请求内容。
在代码中,当收到客户端发起的请求时,Nginx会判断响应内容是否符合gzip压缩条件,并进行相应处理。如果响应内容长度达到设定的最小压缩文件大小,并且内容类型匹配gzip_types指定的文件类型,Nginx会对响应内容进行gzip压缩。对于带有/compressed路径的请求,Nginx会自动解压请求内容。
需要注意的是,gzip压缩会消耗一定的CPU资源,而解压缩也会增加服务器的负担。因此,在配置gzip时需要权衡压缩和解压缩的效益与资源消耗,并根据实际情况进行调整。
以上就是个人整理的nginx实战经验,欢迎评论留言。
相关文章:

(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令
目录 🎫 前言 🎉 开篇福利 🎁 开篇福利 x2 Double happiness # 介绍 # 地址 # 下载 💻 命令及解析 # 整个文件系统中搜索名为nginx.conf的文件 # 编辑nginx.conf文件 # 重新加载配置文件 # 快速查找nginx.conf文件并使…...

软考 软件设计师 场景分析题 速成篇
文章目录 试题一:数据流图💖 基本图形元素1. 外部实体2. 数据存储3. 加工4. 数据流 📚 例题(1)实体名称(2)数据存储名称(3)数据流① 父子图平衡② 加工有输入有输出④ 数…...

[学习笔记](Python3)防止SQL注入、XSS攻击和文件上传漏洞
学习笔记:防止SQL注入、XSS攻击和文件上传漏洞(Python3) 本笔记由生成式大模型GPT-4o自动整理。注意AI可能犯错。代码和理论由GPT-4o(2024-5-21)自行撰写未经人工复核。 参数化查询防SQL注入 参数化查询通过将SQL语句和数据分离来防止SQL注…...

西门子CPU与汇川伺服通信与控制
西门子CPU与汇川620F伺服通信与控制 一、西门子CPU与汇川620F伺服通信与控制1、器件准备2、伺服软件设置3、PLC添加汇川伺服描述文件4、PLC编程调试5、总结 二、西门子s7-1500限位信号接到伺服的方法1、通过默认报文获取限位信号2、添加自定义报文获取限位信号3、总结 三、西门…...

移动硬盘无法读取怎么修复?简单八步,轻松搞定!
移动硬盘在日常生活和工作中扮演着重要的角色,但有时我们可能会遇到移动硬盘无法读取的问题。这种情况可能导致数据无法访问,给用户带来一定的困扰。本文将介绍移动硬盘无法读取的可能原因以及针对这些问题的修复方法。 1. 检查硬件连接 当发现移动硬盘…...

c4d云渲染是工程文件会暴露吗?
在数字创意产业飞速发展的今天,C4D云渲染因其高效便捷而备受欢迎。然而,随着技术应用的深入,人们开始关注一个核心问题:在享受云渲染带来的便利的同时,C4D工程文件安全吗?是否会有暴露的风险?下…...

C语言/数据结构——每日一题(有效的括号)
一.前言 如果想要使用C语言来解决这道题——有效的括号:https://leetcode.cn/problems/valid-parentheses/description/我们必须要借用上一篇我们所讲的内容——栈的实现:https://blog.csdn.net/yiqingaa/article/details/138923750?spm1001.2014.3001.…...

STM32使用旋转编码开关
一、旋转编码开关如何工作 编码器内部有一个开槽圆盘,连接到公共接地引脚 C。它还具有两个接触针 A 和 B,如下所示。 当您转动旋钮时,A 和 B 按照特定顺序与公共接地引脚 C 接触,具体顺序取决于转动旋钮的方向。 当它们与公共地接…...

OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
中移物联OneMO模组以客户为中心,基于中国移动心级服务要求,开展“OneMO同行 心级服务 标定一流”高标服务主题活动,升级“服务内容““服务方式”和“服务意识”,为行业客户提供全新的服务体验。 近日,某车载监控设备…...

爬虫视图展示之 Power BI
实现方式 读取数据的实现 selenium 库 requests 库 存储媒介 MysqlElasticSearch 图表展示 GrafanaPower BI 是什么? Power BI 简单且快速,能够从 Excel 电子表格或本地数据库创建快速见解。 同时 Power BI 也可进行丰富的建模和实时分析ÿ…...

微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
美国东部时间5月20日在微软位于华盛顿的新园区举行的发布会上,宣布将旗下AI助手Copilot全面融入Windows系统,能够在不调用云数据中心的情况下处理更多人工智能任务。 “将世界作为一个提示词就从Windows系统开始”。微软的新PC将是“CopilotPC”…...

抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具
抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具 抖音视频去水印保存部分源码: 通过使用Python中的requests、re和os等库,可以编写如下代码来实现抖音视频去水印保存的功能。 短视频爬虫提取手机下载工具的使用方法: 该工具主…...

类的组合、作用域与可见性、类的静态成员、单例模式、
类的组合 一个类内嵌其他类的对象作为成员的情况 has - a组合 初始化列表的另一用途:为了调用数据成员的带参构造函数 能够层层递进 class Line { public:Line(int x1 0, int y1 0, int x2 0, int y2 0);Line(const Line &other);~Line();Line(const Po…...

高速公路定向广播(声光一体) HT-600D
1、产品概述: HT-600D声光一体平面波IP定向广播是北京恒星科通创新性研发产品,采用公司自主研发的平面波传声技术,该产品具有高声压、强指向性、高清晰度等特点,采用定向声传声技术将声音聚集到正前方定向传输,周边声压级明显降低…...

2024离婚新规已生效,不用等30天冷静期,线上开庭
2024年离婚必知的12条法律知识: ✅分居多久都不会自动离婚,想离婚,必需通过协议或起诉程序离婚 ✅婚后的工资收入,继承的遗产(未指定只给一人)都是夫妻共同财产 ✅没有领结婚证,或领证后没有共同生活&#…...

从零搭建python环境:深入解析虚拟环境与Python版本管理
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为何需要虚拟环境? 二、虚拟环境的创建与命名 1. 虚拟环境…...

windows安装官方正版notepad++
一 、notepad介绍 Notepad 是一个免费的、开源的文本编辑器,主要面向程序员和高级用户。以下是 Notepad 的特点: 跨平台: 虽然主要为 Windows 平台设计,但可以通过 Wine 在 Linux 和 macOS 上运行。 语法高亮: 自动识…...

netty-socketio 集群随记
实现netty-socketio集群的方式 代码实例 PostConstructpublic void subscribe() {pubSubStore.subscribe(PubSubType.DISPATCH, new PubSubListener<DispatchMessage>() {Overridepublic void onMessage(DispatchMessage message) {log.debug("subscribe: {}"…...

查看目录或文件的磁盘使用情况
在排查问题过程中,会遇到磁盘占满,需要排查具体哪个文件占用比较大,此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括: -h 或 --human-readable:以人类可读的格式(如 K、M、G)…...

如何选择合适的自动化框架
自动化测试框架的选型是一个复杂且重要的过程,需要考虑多个因素以确保所选框架能够满足项目的需求。以下是一些建议的步骤和考虑因素: 1. 明确项目需求: * 首先,要明确项目的测试需求,包括测试的类型(如…...

Java面试进阶指南:高级知识点问答精粹(二)
Java 面试问题及答案 1. 什么是Java内存模型(JMM)?它在并发编程中扮演什么角色? 答案: Java内存模型(JMM)是一个抽象的模型,它定义了Java程序中各种变量(线程共享变量&…...

thinkphp 使用模型实现多表连接查询
解决问题,多张表的查询连接问题,3张表及以上 爷爷表 有字段id 爸爸表 有字段id,grandfather_id 儿子表 id,parent_id 控制器中编写 public function getdata(){ $data model(爷爷表)->with([father.son])->select(); var_dump($data…...

LeetCode674:最长连续递增序列
题目描述 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l < i < r,都有 nums[i] < nums…...

Java技术精粹:高级面试问题与解答指南(一)
Java 面试问题及答案 问题1:请解释Java中的多态性,并给出一个例子。 答案: 多态性是Java中的一个重要特性,它允许一个引用类型可以指向多种实际类型的对象,并且可以通过这个引用调用实际对象的方法。多态性主要通过继…...

数据可视化技术头歌测试合集
努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰 目录 时间趋势可视化-柱形图 第1关:“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤 任务描述 相关知识 观察和处理数据 绘…...

【linux-IMX6ULL-字符设备驱动简单框架实验】
目录 1. 字符设备驱动简介1.1 重要函数1.2 简单框架代码流程1.3 linux中关于驱动的重要命令 2. 字符设备驱动简单框架编写2.1 添加LICENSE信息2.2 驱动模块的入口与出口2.3 入口和出口函数的编写2.4 设备操作结构体定义2.4.1 结构体函数内容填充 3. 应用程序简介:4.…...

3D模型旋转显示不全怎么办---模大狮模型网
在3D建模和渲染过程中,我们有时会遇到旋转模型时显示不全的问题。这种情况可能由多种原因造成,包括模型本身的问题、软件设置不当、硬件配置不足等。本文将为您详细介绍几种可能的解决方法,帮助您解决3D模型旋转显示不全的问题。 一、检查模型…...

DLRover:蚂蚁集团开源的AI训练革命
在当前的深度学习领域,大规模训练作业面临着一系列挑战。首先,硬件故障或软件错误导致的停机时间会严重影响训练效率和进度。其次,传统的检查点机制在大规模训练中效率低下,耗时长且容易降低训练的有效时间。资源管理的复杂性也给…...

ubuntu_概念
su(switch user) wget(Web Get) cd(change directory) dpkg(Debian Packager)为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。 chmod(Change Mode)用于改变文件或目录的权限 ps(Process Status)进程状态 grep(Global Regular Expression Print)…...

Oracle递归查询笔记
目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询指定节点的递归路径 六、递归子类 七、递归父类 一、创建表结构和插入数据 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…...