当前位置: 首页 > 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;
}

http://www.lryc.cn/news/523459.html

相关文章:

  • 21.1、网络设备安全概述
  • 通过idea创建的springmvc工程需要的配置
  • Redis 持久化机制:RDB 和 AOF
  • 【博客之星评选】2024年度前端学习总结
  • 将IDLE里面python环境pyqt5配置的vscode
  • 【专题三:穷举vs暴搜vs深搜vs回溯vs剪枝】46. 全排列
  • 使用傅里叶变换进行图像边缘检测
  • DDD FAQs梳理
  • 新星杯-ESP32智能硬件开发--SoC基础
  • WDM_OTN_基础知识_波分系统的网络位置
  • 计算机网络 (46)简单网络管理协议SNMP
  • Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩
  • 使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。
  • 20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
  • 《Hands_On_LLM》8.3: 检索增强生成-RAG技术概论
  • CSS中样式继承+优先级
  • Vue进阶之旅:核心技术与页面应用实战(路由进阶)
  • 单片机存储器和C程序编译过程
  • Vue.js 动态设置表格最大高度的实现
  • Java测试开发平台搭建(九)前端
  • MySQL多表查询练习
  • 低代码运维与管理服务
  • 【机器学习:三十二、强化学习:理论与应用】
  • 解决wordpress媒体文件无法被搜索的问题
  • 【2024年华为OD机试】(B卷,100分)- 增强的strstr (Java JS PythonC/C++)
  • 【前端】CSS学习笔记
  • 项目架构调整,新增sunrays-combinations模块
  • linux网络编程11——线程池
  • MySQL - 主从同步
  • 基于微信小程序的安心陪诊管理系统