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

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 模块下配置相同策略时是存在优先级的,一般遵循 “范围越小,优先级越高” 的原则,

相关文章:

  • react-11使用vscode开发react相关扩展插件(相关的快捷生成)
  • 用Playwright自动化网页测试,不只是“点点点”
  • 大型连锁酒店集团数据湖应用示例
  • 深度解析 MindTorch:无缝迁移 PyTorch 到 MindSpore 的高效工具
  • Centos离线安装Docker(无坑版)
  • 硬件工程师面试常见问题(10)
  • [250430] Kali Linux 存储库密钥丢失导致所有用户无法正常更新 APT
  • 如何使用C语言手搓斐波那契数列?
  • 【数学建模国奖速成系列】优秀论文绘图复现代码(二)
  • OCR身份证识别(正反面)_个人证照OCR识别_开放API接口使用指南
  • AI重构家居营销新范式:DeepSeek如何破解行业流量与转化困局?
  • 在pycharm中创建Django项目并启动
  • 在 API 模拟阶段:Apipost vs. Faker.js vs. Postman —— 为什么 Apipost 是最优选择
  • 科学数据可视化工具库visIt安装和使用
  • 「动态规划::背包」01背包 / AcWing 2(C++)
  • 解决 RN Switch 组件在安卓端样式很丑的问题
  • Databend 产品月报(2025年4月)
  • 人工智能数学基础(六):数理统计
  • 大屏/门户页面兼容各种分辨率或电脑缩放
  • 39.RocketMQ高性能核心原理与源码架构剖析
  • 全国人民代表大会常务委员会公告〔十四届〕第十号
  • 建行一季度净利833.51亿同比下降3.99%,营收降5.4%
  • 释新闻|西葡大停电为何规模大、恢复慢?可再生能源是罪魁祸首?
  • 黄晓丹:用“诗心”找到生存的意义
  • 第二艘国产大型邮轮实现坞内起浮,重点强化邮轮供应链本土化建设
  • 今年我国电影票房破250亿领跑全球,“电影+”带动文旅消费热潮