当前位置: 首页 > news >正文

nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf  ,  /etc/nginx/conf.d/*.conf 中
一般直接 改 conf.d目录下的 default.conf文件,
然后
先检测配置文件是否有错误 

nginx -t

重新加载配置文件 或 重启nginx,命令如下

nginx -s reload
或
systemctl restart nginx

1 入门

# 这是一个最基本的Nginx配置,监听80端口,并返回根目录下的index.html文件
server {listen 80;  # 监听80端口server_name localhost;  # 服务器名称为localhostlocation / {root /usr/share/nginx/html;  # 设置根目录为/usr/share/nginx/htmlindex index.html;  # 默认返回index.html文件}
}

2 配置多个server块,多域名,多端口都大同小异

# 配置多个server块,分别监听不同的域名
server {listen 80;server_name girl.taobao.com;location / {root /usr/share/nginx/html/aa;  #看index index.html;}
}server {listen 80;server_name huwai.taobao.com;location / {root /usr/share/nginx/html/bb; #看index index.html;}
}

3 配置反向代理

# 配置Nginx作为反向代理,将请求转发到后端服务器
server {listen 80;server_name huwai.taobao.com;location / {proxy_pass http://localhost:9001;  # 将请求转发到这里proxy_set_header Host $host;  # 设置请求头proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP}
}

4 配置负载均衡

# 配置Nginx作为负载均衡器,将请求分发到多个后端服务器
upstream backend {server 127.0.0.1:9001;  # 后端服务器1server 127.0.0.1:9002;  # 后端服务器2
}server {listen 80;server_name huwai.taobao.com;location / {proxy_pass http://backend;  # 将请求转发到upstream定义的backend}
}

5 配置自定义错误页面,此示例中的404.html和50x.html位于/usr/share/nginx/html/   目录 下

# 配置Nginx自定义错误页面
server {listen 80;server_name huwai.taobao.com;location / {root /usr/share/nginx/html;index index.html;}# 自定义404错误页面error_page 404 /404.html;location = /404.html {root /usr/share/nginx/html;  # 看}# 自定义50x错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;  # 看}
}

6 配置限流

# 定义一个限流区域,每秒允许1个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {listen 80;server_name huwai.taobao.com;# 设置限流状态码为503,并通过error_page指向自定义页面error_page 503 /50x.html;location / {limit_req zone=one burst=5 nodelay;  # 应用限流,允许突发5个请求,立即拒绝超出burst限制的请求root /usr/share/nginx/html;index index.html;# 当触发限流时返回503状态码limit_req_status 503;}# 配置50x错误页面的位置location = /50x.html {root /usr/share/nginx/html;}
}

7 负载均衡+限流

# 定义一个限流区域,每秒允许1个请求(您可以根据需要调整)
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;upstream backend {server 127.0.0.1:9001;  # 后端服务器1server 127.0.0.1:9002;  # 后端服务器2
}server {listen 80;server_name huwai.taobao.com;location / {# 应用限流规则,使用之前定义的限流区域,并设置突发请求数量为5limit_req zone=one burst=5 nodelay;# 设置限流状态码为503,并通过error_page指向自定义页面limit_req_status 503;# 当触发限流时返回到自定义的503错误页面error_page 503 /50x.html;proxy_pass http://backend;  # 将请求转发到upstream定义的backend# 配置后端服务器响应头的调整等(可选)proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 配置50x错误页面的位置location = /50x.html {root /usr/share/nginx/html;  # 假设您的50x.html位于此目录下}
}

8 配置Gzip压缩

# 配置Nginx启用Gzip压缩,减少传输数据量
server {listen 80;server_name huwai.taobao.com;gzip on;  # 启用Gzip压缩gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;  # 指定压缩的文件类型location / {root /usr/share/nginx/html;index index.html;}
}

9 静态资源服务器综合配置,此示例中的404.html和50x.html位于/usr/share/nginx/html/   目录 下

server {listen 80;server_name huwai.taobao.com;# 设置根目录root /usr/share/nginx/html;# 启用Gzip压缩(适用于文本文件)gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;# 图片缓存优化location ~* \.(jpg|jpeg|png|gif|ico|webp|svg)$ {expires 30d;  # 设置缓存时间为30天add_header Cache-Control "public";  # 允许公共缓存add_header Pragma "public";  # 支持旧版HTTP客户端add_header Vary "Accept-Encoding";  # 根据Accept-Encoding头进行缓存# 图片防盗链配置valid_referers none blocked huwai.taobao.com *.huwai.taobao.com;if ($invalid_referer) {return 403;  # 如果来源不在允许列表中,返回403 Forbidden}}# HTML、CSS、JS缓存优化location ~* \.(html|css|js)$ {expires 7d;  # 设置缓存时间为7天add_header Cache-Control "public";add_header Pragma "public";add_header Vary "Accept-Encoding";}# 防止访问隐藏文件(如 .htaccess)location ~ /\. {deny all;}# 配置错误页面error_page 404 /404.html;location = /404.html {root /usr/share/nginx/html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# 配置日志access_log /var/log/nginx/static_access.log;error_log /var/log/nginx/static_error.log;
}

相关文章:

nginx常用配置 (含负载均衡、反向代理、限流、Gzip压缩、图片防盗链 等示例)

nginx的配置文件通常在 /etc/nginx/nginx.conf , /etc/nginx/conf.d/*.conf 中, 一般直接 改 conf.d目录下的 default.conf文件, 然后 先检测配置文件是否有错误 nginx -t 再重新加载配置文件 或 重启nginx,命令如下 nginx -s reload 或…...

21.1、网络设备安全概述

目录 网络设备安全概况——交换机、路由器安全威胁 网络设备安全概况——交换机、路由器安全威胁 第一个是MAC地址泛洪,MAC地址表记录着交换机拥有的MAC地址跟端口的对应关系 MAC地址表主要是三个字段,MAC地址对应的端口号,也就表示主机是连…...

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…...

Redis 持久化机制:RDB 和 AOF

Redis 持久化机制&#xff1a;RDB 和 AOF Redis 主要提供了两种持久化方式&#xff1a;**RDB&#xff08;Redis Database&#xff09;**和 AOF&#xff08;Append-Only File&#xff09;。它们各自的实现原理、优缺点以及适用场景如下。 1. RDB&#xff08;Redis Database&…...

【博客之星评选】2024年度前端学习总结

故事的开端...始于2024年第一篇前端技术博客 那故事的终末...也该结束于陪伴了我一整年的前端知识了 踏入 2025 年&#xff0c;满心激动与自豪&#xff0c;我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新&#xff0c;这次能走到这…...

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…...

【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列

1.题目解析 2.讲解算法原理 1.首先画出决策树&#xff0c;越详细越好 2.设计代码 全局变量 List<List<Integer>> retList<Integer> pathboolean[] check dfs函数 仅关心某一节点在干什么 细节问题回溯 干掉path最后一个元素修改check权限 剪枝 check中为…...

使用傅里叶变换进行图像边缘检测

使用傅里叶变换进行图像边缘检测 今天我们介绍通过傅里叶变换求得图像的边缘 什么是傅立叶变换&#xff1f; 简单来说&#xff0c;傅里叶变换是将输入的信号分解成指定样式的构造块。例如&#xff0c;首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f&#xff08;x…...

DDD FAQs梳理

术语 领域&#xff1a;一种专门活动的范围、部类。 子域&#xff1a;一个领域细分出的多个子领域。 核心域&#xff1a;具备核心竞争力的子域。 通用域&#xff1a;同时被多个子域使用的通用功能子域&#xff0c;比如认证、权限。 支撑域&#xff1a;一些辅助性或后台功能组成…...

新星杯-ESP32智能硬件开发--SoC基础

本博文内容导读 1、当前嵌入式系统的发展情况&#xff0c;分析SoC作为物联网开发的重要技术&#xff0c;是未来物联网发展重要方向。 2、介绍SoC系统的组成和系统特点&#xff0c;了解SoC打下SoC基础。 3、介绍基于ESP32的SoC系列开发板&#xff0c;ESP32开发的系统功能进行总…...

WDM_OTN_基础知识_波分系统的网络位置

波分系统简介和OTU 在这节课的内容中&#xff0c;我们主要介绍&#xff0c;波分系统在整个通信网络中的位置&#xff0c;波分系统的构成和它的架构&#xff0c;波分设备的构成和信号图&#xff0c;以及OUT的功能和分类及波分系统的应用场景。 波分系统在整个通信网络中&#x…...

计算机网络 (46)简单网络管理协议SNMP

前言 简单网络管理协议&#xff08;SNMP&#xff0c;Simple Network Management Protocol&#xff09;是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议&#xff0c;它使网络管理员能够管理网络效能&#xff0c;发现并解决网…...

Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩

一、前言&#xff1a; 这个博客的实战场景&#xff1a;给了一组学生数据&#xff0c;这些数据中&#xff0c;有全市20个社区&#xff0c;1-9年级的学生各科成绩。要求按照各社区统计1-9年级的所有学生各科平均值。下面首先介绍会用到的一些函数&#xff0c;然后再简单说明实战…...

使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。

在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出&#xff0c;详见以下博客&#xff1a; Spring Boot Apache POI 实现 Exc&#xff08;&#xff09;el 导出&#xff1a;BOM物料清单生成器&#xff08;支持中文文件名、样式美化、数据合并&#…...

20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识

20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识 2025/1/18 15:12 缘起&#xff1a;做飞凌OK3588-C开发板/核心板【Linux R4】的时候&#xff0c;测试/生产要求没有开机LOGO【飞凌/Rockchip】 要求&#xff1a;黑屏或者中性界面。…...

《Hands_On_LLM》8.3: 检索增强生成-RAG技术概论

3.检索增强生成 (Retrieval-Augmented Generation (RAG)) LLM 的大规模应用很快导致人们向它们提问&#xff0c;并期望得到符合实际的答案。虽然这些模型可以正确回答一些问题&#xff0c;但它们也自信地回答了许多错误的问题。为了纠正这种行为&#xff0c;业界转而采用的主要…...

CSS中样式继承+优先级

继承属性和非继承属性 一、定义及分类 1、继承属性是指在父元素上设置了这些属性后&#xff0c;子元素会自动继承这些属性的值&#xff0c;除非子元素显式地设置了不同的值。 常见的继承属性: 字体 font 系列文本text-align text-ident line-height letter-spacing颜色 col…...

Vue进阶之旅:核心技术与页面应用实战(路由进阶)

文章目录 一、路由模块封装二、声明式导航&#xff08;一&#xff09;导航链接与高亮&#xff08;二&#xff09;声明式导航传参1. 查询参数传参2. 动态路由传参 三、路由重定向、404 与模式设置&#xff08;一&#xff09;路由重定向&#xff08;二&#xff09;路由 404&#…...

单片机存储器和C程序编译过程

1、 单片机存储器 只读存储器不是并列关系&#xff0c;是从ROM发展到FLASH的过程 RAM ROM 随机存储器 只读存储器 CPU直接存储和访问 只读可访问不可写 临时存数据&#xff0c;存的是CPU正在使用的数据 永久存数据&#xff0c;存的是操作系统启动程序或指令 断电易失 …...

Vue.js 动态设置表格最大高度的实现

概述 在现代 Web 开发中&#xff0c;响应式设计至关重要&#xff0c;尤其是在处理复杂的布局和数据表格时。表格通常会受到多种因素的影响&#xff0c;如分页、合计行或动态内容&#xff0c;这可能导致表格高度的变化。本文将介绍一个基于 Vue.js 的方法 setMaxHeight&#xf…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...