当前位置: 首页 > 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…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...