nginx 配置文件location块中符号的含义

nginx -t 检查配置文件语法问题

nginx -s reload 重新加载conf文件

location 块

= 表示精确匹配

~ 这个符号开头表示区分大小写

* 一般和 ~ 公用, ~* 表示不区分大小写

^ 表示正则的开始

前缀匹配:默认的匹配方式,不带修饰符,匹配 URI 的前缀。

javascript 复制代码
location /api {
    # 处理 /api 及其子路径的请求
}

精确匹配:使用 = 修饰符,仅当请求 URI 与指定字符串完全相等时匹配。​​​​​​​

javascript 复制代码
location = / {
    # 仅处理根路径 / 的请求
}

正则表达式匹配:使用 ~ 或 ~* 修饰符,分别表示区分大小写和不区分大小写的正则表达式匹配。​​​​​​​

javascript 复制代码
location ~* \.(jpg|png|gif)$ {
# 处理所有以 .jpg、.png 或 .gif 结尾的请求
}

目录匹配:以斜杠 / 结尾的匹配模式,用于匹配特定的目录。​​​​​​​

javascript 复制代码
location /images/ {
    # 处理 /images/ 目录下的请求
}
javascript 复制代码
location ^~ /favicon.ico {
			alias /data/webapps/nginx/www/favicon.ico;
		}
		
		location ^~ /css/ {
			alias /data/nginx/www/css/;
		}

		location ^~ /css2/ {
				alias /data/nginx/www/css2/;
		}

		location ^~ /icons/ {
			alias /data/nginx/www/icons/;
		}

		location ^~ /images/ {
			alias /data/nginx/www/images/;
		}

		location ^~ /js/ {
			alias /data/nginx/www/js/;
		}
javascript 复制代码
    # 使用正则表达式匹配/a和/b路径  
    location ~ ^/(a|b)$ {  
        return 404;  
    }   

    # 处理静态文件  
    location /static/ {  
        alias /path/to/static/files/;  
        try_files $uri $uri/ =404;  
    }  
javascript 复制代码
server {  
    listen       80;  
    server_name  example.com;  
  
    # 精确匹配/a和/b路径,并返回404  
    location = /a {  
        return 404 "Not Found: /a is not allowed.";  
    }  
  
    location = /b {  
        return 404 "Not Found: /b is also not allowed.";  
    }  


  
    # 处理API请求,可能通过proxy_pass转发到其他服务器  
    location /api/ {  
        proxy_pass http://backend_server/api/;  
        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;  
    }  
  
    # 匹配所有其他路径,尝试服务静态文件(如果配置了的话),否则返回404  
    location / {  
        root   /usr/share/nginx/html;  
        try_files $uri $uri/ /index.html; # 尝试服务文件,如果找不到则重定向到index.html(常用于单页应用)  
        # 如果上面的try_files没有匹配到任何文件,并且没有重定向到index.html,则可以考虑在这里返回404  
        # 但由于try_files的最后一个参数是/index.html,通常不会执行到这里  
        # 如果不希望重定向到index.html,可以去掉/index.html,并在下面添加return 404;  
    }  
  
    # 错误页面处理(可选)  
    error_page 404 /404.html;  
    location = /404.html {  
        root /usr/share/nginx/html;  
        internal;  
    }  
  

}

location 块的优先级

当有多个 location 块匹配同一个请求时,Nginx 会根据以下规则来确定使用哪个 location 块:

1.首先检查是否有精确匹配 (=)。

2.如果没有,检查是否有带有正则表达式的匹配 (~ 或 ~*),并使用第一个匹配的规则。

3.如果没有正则表达式匹配,则使用最长的前缀匹配。

相关推荐
zhaotiannuo_19981 小时前
渗透测试之docker
运维·docker·容器
王正南2 小时前
kali-linux 虚拟机连接安卓模拟器
android·linux·运维·虚拟机连接模拟器·安卓模拟器,linux虚拟机
三不原则2 小时前
故障案例:容器启动失败排查(AI运维场景)——从日志分析到根因定位
运维·人工智能·kubernetes
吳所畏惧2 小时前
Linux环境/麒麟V10SP3下离线安装Redis、修改默认密码并设置Redis开机自启动
linux·运维·服务器·redis·中间件·架构·ssh
yueguangni2 小时前
sysstat 版本 10.1.5 是 CentOS 7 的默认版本,默认情况下确实不显示 %wait 字段。需要升级到新版sysstat
linux·运维·centos
funfan05173 小时前
【运维】MySQL数据库全量备份与恢复实战指南:从入门到精通
运维·数据库·mysql
-dcr3 小时前
49.python自动化
运维·python·自动化
Benny的老巢3 小时前
Mac上用XAMPP搭建局域网可访问的开发环境,让局域网内其他设备通过域名访问
nginx·macos·apache·xampp·php开发环境
萧曵 丶4 小时前
Linux 业务场景常用命令详解
linux·运维·服务器
乾元4 小时前
ISP 级别的异常洪泛检测与防护——大流量事件的 AI 自动识别与响应工程
运维·网络·人工智能·安全·web安全·架构