解读 Nginx 配置
tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。
推荐:体系化学习Java(Java面试专题)
文章目录
- 1、Nginx 配置文件包含哪些模块
- 2、Core 模块
- 3、Events 模块
- 4、HTTP 模块
- 5、Upstream 模块
- 5、Rewrite 模块
- 6、Access 模块
- 7、SSL 模块
1、Nginx 配置文件包含哪些模块
Nginx 配置文件包含的模块取决于安装的 Nginx 版本和编译选项,一般情况下包含以下模块:
-
Core 模块:提供 Nginx 的基本功能,例如请求处理、反向代理、负载均衡、缓存等。
-
Events 模块:提供事件处理相关的功能,例如 I/O 多路复用、定时器、信号处理等。
-
HTTP 模块:提供 HTTP 协议相关的功能,例如请求头、响应头、状态码等。
-
Upstream 模块:提供反向代理相关的功能,例如负载均衡、后端服务器健康检查等。
-
Rewrite 模块:提供 URL 重写相关的功能,例如重定向、路径重写、正则表达式匹配等。
-
Access 模块:提供访问控制相关的功能,例如 IP 黑名单、白名单、基于 HTTP Basic 认证的访问控制等。
-
SSL 模块:提供 SSL/TLS 相关的功能,例如 HTTPS 支持、SSL 证书配置等。
-
Cache 模块:提供缓存相关的功能,例如反向代理缓存、FastCGI 缓存、SCGI 缓存等。
-
Gzip 模块:提供压缩相关的功能,例如 Gzip 压缩、Deflate 压缩等。
-
Real IP 模块:提供真实 IP 相关的功能,例如获取真实 IP、设置代理服务器的 IP 等。
-
Headers More 模块:提供更多的 HTTP 头部相关的功能,例如添加、修改、删除 HTTP 头部等。
-
Http Sub Module 模块:提供响应内容替换相关的功能,例如替换 HTML 内容中的字符串等。
2、Core 模块
Core 模块提供 Nginx 的基本功能,例如请求处理、反向代理、负载均衡、缓存等。在配置文件中,Core 模块的指令都是以“worker_processes”、“worker_connections”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 worker_processes 指令指定了 Nginx 启动时要创建的 worker 进程数量,worker_connections 指令指定了每个 worker 进程能够处理的最大连接数:
worker_processes 1;
events {worker_connections 1024;
}
http {# 其他模块的配置指令
}
3、Events 模块
Events 模块提供事件处理相关的功能,例如 I/O 多路复用、定时器、信号处理等。在配置文件中,Events 模块的指令都是以“worker_connections”、“use”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 use 指令指定了 Nginx 使用的事件驱动模型,epoll 是 Linux 下的一种事件驱动模型:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {# 其他模块的配置指令
}
4、HTTP 模块
HTTP 模块提供 HTTP 协议相关的功能,例如请求头、响应头、状态码等。在配置文件中,HTTP 模块的指令都是以“server”、“location”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 server 指令指定了监听的端口和虚拟主机的配置,location 指令指定了请求的 URL 匹配规则和对应的处理方式:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {server {listen 80;server_name example.com;location / {proxy_pass http://127.0.0.1:8080;}}
}
5、Upstream 模块
Upstream 模块提供反向代理相关的功能,例如负载均衡、后端服务器健康检查等。在配置文件中,Upstream 模块的指令都是以“upstream”、“server”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 upstream 指令指定了后端服务器的列表和负载均衡策略,server 指令指定了后端服务器的 IP 地址和端口:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {upstream backend {server 127.0.0.1:8080;server 127.0.0.1:8081;server 127.0.0.1:8082;# 负载均衡策略# ...}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}}
}
5、Rewrite 模块
Rewrite 模块提供 URL 重写相关的功能,例如重定向、路径重写、正则表达式匹配等。在配置文件中,Rewrite 模块的指令都是以“rewrite”、“if”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 rewrite 指令将所有以 /foo 开头的 URL 重定向到 /bar,if 指令用于判断请求头中的 User-Agent 字段:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {server {listen 80;server_name example.com;location / {if ($http_user_agent ~* (MSIE|Trident)) {rewrite ^/foo(.*)$ /bar$1 permanent;}# 其他处理方式# ...}}
}
6、Access 模块
Access 模块提供访问控制相关的功能,例如 IP 黑名单、白名单、基于 HTTP Basic 认证的访问控制等。在配置文件中,Access 模块的指令都是以“allow”、“deny”、“auth_basic”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 allow 指令允许指定 IP 地址的访问,deny 指令拒绝指定 IP 地址的访问,auth_basic 指令启用 HTTP Basic 认证:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {server {listen 80;server_name example.com;location / {allow 192.168.0.1;deny 192.168.0.2;auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd;# 其他处理方式# ...}}
}
7、SSL 模块
SSL 模块提供 SSL/TLS 相关的功能,例如 HTTPS 支持、SSL 证书配置等。在配置文件中,SSL 模块的指令都是以“ssl_certificate”、“ssl_certificate_key”等形式出现的。
例如,以下是一个简单的 Nginx 配置文件,其中 ssl_certificate 指令指定了 SSL 证书的路径,ssl_certificate_key 指令指定了 SSL 证书的私钥路径:
worker_processes 1;
events {worker_connections 1024;use epoll;
}
http {server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;# 其他处理方式
相关文章:
解读 Nginx 配置
tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:体系化学习Java(Java面试专题) 文章目录 1、Nginx 配…...
知识变现海哥:课程定价容易出现的三大误区
哈喽,大家好,我是海哥,知识付费变现创业教练,教育公司培训总监,从事知识付费变现咨询10年,已助力3000人实现知识付费变现。 很多做知识付费的老师都有定价方面的困惑。怕定太高,卖不出去&#…...
Android开发 LogDog (日志狗)V2.0.0
目录 一、简介 二、使用推荐 1、初始化LogDog 2、运行中如何更改初始化时的配置? 三、更改 四、新功能 1、Log过滤 2、自定义打印 3、提供占位符式打印 一、简介 LogDog V1.0 版本https://blog.csdn.net/Ym_quiet/article/details/130453232?spm1001.2014…...
JavaScript break
在JavaScript中,break语句用于提前退出或终止循环或switch语句。它允许您立即停止循环或switch的执行,并继续执行后面的代码。 以下是在循环中使用break的示例: javascript for (var i 0; i < 10; i) { if (i 5) { break; // 当…...
linux服务器使用curl命令处理常用es查询
目录 场景: 结果格式化显示: 验证服务启动: 单个参数变量查询: 分页查询: 日期范围查询: must中单个参数条件查询 must中多个参数条件查询 使用filter过滤查询 使用sort过滤查询 总结: 场景…...
Office Visio 2013安装
哈喽,大家好。今天一起学习的是Visio 2013的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…...
C++ 私有析构函数的作用
如果一个类的析构函数声明为私有(private),其他对象或函数将无法直接调用析构函数。这意味着如果你尝试使用delete操作符删除该类的对象,将会导致编译错误,因为析构函数是不可访问的。 将析构函数声明为私有是一种防止…...
【C++】deque的用法
目录 一、容器适配器二、deque的介绍三、deque的使用及缺陷1、deque的构造函数2、deque的元素访问接口3、deque的 iterator的使用4、deque的增删查改4、deque的缺陷5、为什么选择deque作为stack和queue的底层默认容器 一、容器适配器 在了解deque前,我们先讲一讲什…...
Live800:智能客服有哪些未来发展趋势?
智能客服,也称智能问答系统,是一种利用机器学习、自然语言处理等技术实现自主询问、自主应答、自主维护的自动化系统。它们可以通过文字形式,为用户提供个性化、一对一的服务,避免了人工客服的人力成本和等待时间。 未来ÿ…...
【一】Java SE 基础
文章目录 一、初始Java1.1 什么是Java1.2 Java的特点1.3 第一个Java程序 二、数据类型与变量2.1 基本数据类型2.2 基本数据类型对应的包装类2.3 变量2.4 类型转换2.5 字符串类型及其与数字之间的转换 三、运算符3.1 算术运算符3.2 赋值运算符3.3 关系运算符3.4 逻辑运算符3.5 位…...
Linux防火墙学习笔记2
iptables是什么? 1)iptables 不是防火墙,是防火墙用户代理。 2)用于把用户的安全设置添加到“安全框架”中。 3)“安全框架”是防火墙。 4)安全框架的名称是netfilter。 5)netfilter位于内…...
Linux下MongDB定时备份方案
1. 安装crontabs 首先安装crontabs yum install crontabs 2. 创建备份目录 [rootlocalhost data]# mkdir -p /data/backup/mongo/mongodb_bak_tmp [rootlocalhost data]# mkdir -p /data/backup/mongo/mongodb_bak_path 3. 创建MongoDB备份shell脚本 有密码: …...
长尾词挖掘,长尾词的优化方法有哪些
我们都知道,长尾词能给我们带来较高的流量和转化率,且优化难度低,成本低。今天就来分享长尾词的优化方法。 首先需要挖掘长尾词,挖掘长尾词的方法以下3种比较实用: 1、使用长尾词挖掘工具 可以通过第三方工…...
JUC基础-0601
6 多线程锁 6.1 锁的八个问题演示 class Phone {public static synchronized void sendSMS() throws Exception {//停留4秒TimeUnit.SECONDS.sleep(4);System.out.println("------sendSMS");}public synchronized void sendEmail() throws Exception {System.out.p…...
bash特性
bash bash是一个命令处理器,运行在文本窗口zh哦那个,执行用户输入的命令。 1、bash特性–历史命令 保留用户的历史执行的命令,可以使用history查看之前执行过的命令 #通过$HISTORY查看保存的命令条数 echo $HISTORY #存放用户执行的历史…...
[Flink] Flink On Yarn(yarn-session.sh)启动错误
在Flink上启动 yarn-session.sh时出现 The number of requested virtual cores for application master 1 exceeds the maximum number of virtual cores 0 available in the Yarn Cluster.错误。 版本说明: Hadoop: 3.3.4 Flink:1.17.1 问题…...
玩转css逐帧动画,努力成为更优质的Ikun~
🎉 一、前言 css3的animation想必大家都知道吧,那 steps 逐帧动画你知道吗?对于我来说,实际工作及练习中也很少用到这种跳跃式变化的动画,而它start和end的解释又比较“不说人话”,以前用到steps动画的时候…...
Linux Capabilities
Linux Capabilities是一种细粒度的权限管理机制,用于将root用户的特权划分为具体的功能集。它允许将部分root特权授予非root进程。 可以在shell中运行: man capabilities将显示capability man page,其中包含有关Linux功能的详细信息。 文章目录 什么是CapabilitiesLinux Cap …...
【自制C++深度学习框架】前言
KuiperCourse 介绍 此GitHub项目是一个初学者的深度学习框架,使用C编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能: 计算图:使用计算图来描述深度学习模型的计算过程,利用计…...
【高危】泛微 e-cology9 存在任意用户登录漏洞
漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微e-cology9部分版本中存在前台任意用户登录漏洞,由于系统默认配置固定密钥进行用户身份验证。 当存在/mobile/plugin/1/ofsLogin.jsp文件时(可能通过插件方式安装࿰…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
