Nginx 反向代理与负载均衡:深入解析 location 优先级

前言

今天我们将一起探讨 Nginx 反向代理与负载均衡中的一个重要环节------location 配置的优先级。通过本文,你将对 Nginx 的 location 匹配规则有更深入的了解。

环境搭建

在开始之前,我们需要准备一个简单的实验环境:

  • 主服务器:192.168.10.50
  • 代理机 1:192.168.10.51
  • 代理机 2:192.168.10.52
  • 代理机 3:192.168.10.53

所有机器均使用 Ubuntu 系统。

准备工作

  1. 机器准备:准备好 4 台机器,其中 1 台作为主服务器,其余 3 台作为反向代理机。你可以使用虚拟机来快速克隆多台机器。
  2. 软件选择:不推荐使用官方的 Nginx 包,因为它没有集成插件,使用起来不太方便。推荐使用第三方如 OpenResty 或宝塔,它们的运维管理更友好。(本文以宝塔为例)
  3. 镜像源切换:如果你还不了解如何切换镜像源,可以参考我之前的推文。
  4. SSH 开启:如果你还不了解如何开启 SSH,也可以参考我之前的推文。
  5. 统一管理:建议使用 SSH 连接来统一管理四台服务器。
  6. 安装宝塔并配置 Nginx:如果你还不了解如何安装宝塔,可以参考我之前的推文。

Nginx 安装

宝塔环境

在宝塔工具下直接搜索 Nginx 服务,或者直接搭建 LNMP 环境。

原生环境

bash 复制代码
# 直接安装
sudo apt-get install nginx

# 或者指定版本
sudo apt-cache show nginx
sudo apt-get install nginx=1.10.3-0ubuntu0.16.04.5

配置需求与示例

默认匹配(最低优先级)

在主服务器上创建一个站点,默认匹配所有请求。

nginx 复制代码
server {
    listen 80;
    server_name 192.168.10.50;
    default_type text/html;

    location / {
        echo "Waiting!";
    }
}

访问 http://192.168.10.50 将返回 "Waiting!"。

指定匹配(最高优先级)

nginx 复制代码
location = /test {
    echo "This is Nginx Test";
}

访问 http://192.168.10.50/test 将返回 "This is Nginx Test"。

前缀匹配(次高优先级)

nginx 复制代码
location ^~ / {
    echo "Hello Test";
}

访问 http://192.168.10.50/hello 将返回 "Hello Test"。

正则表达式匹配(第三优先级)

nginx 复制代码
location ~ /.* {
    echo "ZhengZe";
}

访问 http://192.168.10.50/eehttp://192.168.10.50/aahttp://192.168.10.50/bb 都将返回 "ZhengZe"。

总结

以下是 location 匹配的优先级总结:

  1. location /:匹配所有请求。
  2. location = /pwd:仅精确匹配指定的 pwd 路径,若未配置其他,则返回 404。
  3. location ^~ /pwd:次高匹配,如果匹配 pwd 路径,不再匹配正则。
  4. location ~ /pwd:使用正则匹配 pwd 路径,区分大小写。
  5. location ~* /url:使用正则匹配,不区分大小写。

希望本文能帮助你更好地理解 Nginx 的 location 配置优先级。如果你有任何问题或建议,欢迎在评论区留言交流。

相关推荐
从入门到退休1 小时前
企业远程控制选型:向日葵SDK vs RustDesk自建,谁是更务实的选择?
运维·服务器·网络·远程工作·远程控制
小王C语言3 小时前
Windows 无法使用 ssh 连接虚拟机(ubuntu),网络没问题的情况下
运维·ssh
java_logo3 小时前
Docker 部署 MinIO:轻松搭建 S3 兼容对象存储平台
运维·docker·容器·对象存储·minio·轩辕镜像·minio部署
祖力553 小时前
进程间通信(IPC机制):信号
linux·运维·服务器·进程·进程间通信·多任务·ipc
Neighbor_OldY3 小时前
线上服务CPU飙高接口超时应急处置实战:从load爆表到快速定位根因,一次线上救火全记录
大数据·运维
fb_123453 小时前
虚拟化技术介绍
运维·服务器
treacle田4 小时前
达梦数据库-Linux DM主备集群动态增加节点-记录总结
linux·运维·数据库·达梦主备集群动态扩展
FIT2CLOUD飞致云4 小时前
1Panel AI一体机(GB10版)推出MiniMax H3本地视频生成方案
运维·ai·开源·1panel·ai视频·运维面板
ARM|X86+FPGA工业主板厂家4 小时前
基于Jetson TX2的矿用巡检机器人
linux·运维·机器人
杨云龙UP4 小时前
Oracle 19c RMAN历史备份清理失败:CONTROL_FILE_RECORD_KEEP_TIME 问题排查与整改实战
linux·运维·网络·数据库·oracle·rac