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

Nginx — http、server、location模块下配置相同策略优先级问题

一、配置优先级简述

在 Nginx 中,httpserverlocation 模块下配置相同策略时是存在优先级的,一般遵循 “范围越小,优先级越高” 的原则,下面为你详细介绍:

1. 配置继承关系

  • http 块:作为全局配置块,其中的配置会对所有的 server 块生效,属于最宽泛的配置范围。
  • server 块:定义虚拟主机,其配置会覆盖 http 块中相同的配置,适用于特定的域名或 IP 地址。
  • location 块:处于 server 块内部,用于匹配特定的 URI 路径,其配置会覆盖 server 块和 http 块中相同的配置,是最精细的配置范围。

二、实验验证

以日志配置为例

实验准备:

步骤一:在http模块定义日志

配置在http块下配置日志

http {...#配置日志log_format myformat '访问URL: $request_uri';access_log logs/http.log myformat;...
}

步骤二:在server和location块下定义日志

server {...access_log logs/server.log myformat;...location /location {...access_log logs/location.log myformat;...}
}

步骤三:定义两个server 三个访问url 

server配置

server {listen      443 ssl;ssl_certificate /usr/local/nginx/conf/ssl/gateway.crt;ssl_certificate_key /usr/local/nginx/conf/ssl/gateway.key;server_name  192.168.72.130;root /opt/xxx;location /http {#这里设置内部重定向,将http开头的请求重定向到根目录下rewrite ^/http(.*)$ /$1 break;# 开启目录列表展示功能autoindex on;# 以可读格式显示文件大小autoindex_exact_size off;# 以本地时间显示文件修改时间autoindex_localtime on;}
}server {listen 80;server_name 192.168.72.130;  # 替换为你的域名gzip on;#配置日志access_log logs/server.log myformat;# 网站根目录,即要暴露内容的目录root /opt/xxx;location /server {#这里设置内部重定向,将server开头的请求重定向到根目录下rewrite ^/server(.*)$ /$1 break;# 开启目录列表展示功能autoindex on;# 以可读格式显示文件大小autoindex_exact_size off;# 以本地时间显示文件修改时间autoindex_localtime on;}location /location {#这里设置内部重定向,将 /location 开头的请求重定向到根目录下rewrite ^/location(.*)$ /$1 break;#配置日志access_log logs/location.log myformat;# 开启目录列表展示功能autoindex on;# 以可读格式显示文件大小autoindex_exact_size off;# 以本地时间显示文件修改时间autoindex_localtime on;}
}

三、实验结果 

因为在location中有定义日志所以日志输出直接采用location中的策略

 因为在location中没有定义日志所以日志输出采用server中的策略

 因为在location和server中都没有定义日志,所以日志输出采用server中的策略

结论:

在 Nginx 中,httpserverlocation 模块下配置相同策略时是存在优先级的,一般遵循 “范围越小,优先级越高” 的原则,

http://www.xdnf.cn/news/3255.html

相关文章:

  • 【AI提示词】二八法则专家
  • 【今日探针卡行业分析】2025年4月30日
  • 在Electron中爬取CSDN首页的文章信息
  • 【神经网络与深度学习】探索全连接网络如何学习数据的复杂模式,提取高层次特征
  • 无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享
  • vue2 el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值
  • 【自然语言处理与大模型】大模型意图识别实操
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(6):MCP服务大规模部署方案
  • 分享5款让电脑更方便更有趣的软件
  • 树的序列化 - 学习笔记
  • 聚焦数字中国|AI赋能与安全守护:Coremail引领邮件办公智能化转型
  • DeepSeek最新大模型发布-DeepSeek-Prover-V2-671B
  • Depth Anything V2:深度万象 V2
  • 【Prometheus-OracleDB Exporter安装配置指南,开机自启】
  • buildroot 和 busybox 系统的优缺点
  • 科普--- 云中心的概念
  • DeepSeek-V3 解读,第一部分:理解 Multi-Head Latent Attention
  • redis-单节点-主从节点-哨兵模式
  • webrtc ICE 打洞总结
  • 【网络原理】 《TCP/IP 协议深度剖析:从网络基础到协议核心》
  • 楼宇智能化一、二章【期末复习】
  • LeetCode —— 572. 另一棵树的子树
  • 【昇腾】Benchmark
  • 算法导论第6章思考题
  • linux find命令妙用
  • 公司运营-税务篇
  • winget使用
  • 【人脸去遮挡前沿】三阶段级联引导学习如何突破真实场景遮挡难题?
  • 从零开始学Python游戏编程49-二维数组3
  • 【数学建模国奖速成系列】优秀论文绘图复现代码(三)