当前位置:首页 > 技术文章 > 正文内容

5分钟搞懂nginx的location匹配规则

arlanguage5个月前 (12-14)技术文章34

目录

  • 概述
  • location介绍
  • location指令语法
  • location配置实例解析
  • location常用场景实战
  • 禁止访问.sh后缀的文件实例
  • php7进阶到架构师相关阅读

概述

这是关于php进阶到架构之Nginx进阶学习的第篇文章:5分钟搞懂nginx的location匹配规则

  • 第一篇:5分钟搞懂nginx的location匹配规则

location介绍

location指令是http模块当中最核心的一项配置,

根据预先定义的URL匹配规则来接收用户发送的请求,

根据匹配结果,将请求转发到后台服务器、

非法的请求直接拒绝并返回403、404、500错误处理等。

location指令语法

location [=|~|~*|^~|@] /uri/ { … } 
或 location @name { … }

规则说明:


nginx匹配规则说明


多个location配置的匹配顺序:

  • 首先匹配:"="
  • 其次匹配:"^~"
  • 再匹配:文件location书写顺序
  • 若没有匹配到,最后把所有请求交给通配符("/")
  • 当有匹配成功时候,停止匹配,按当前匹配规则处理请求

当nginx收到一个请求后,

会截取请求的URI部份,

去搜索所有location指令中定义的URI匹配模式。

在server模块中可以定义多个location指令来匹配不同的url请求,

多个不同location配置的URI匹配模式,

总体的匹配原则是:先匹配普通字符串模式,再匹配正则模式。

只识别URI部份

location配置实例解析

location = / {
   #规则A
}
location = /login {
   #规则B
}
location ^~ /static/ {
   #规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则D
}
location ~* \.png$ {
   #规则E
}
location / {
   #规则F
}

访问 http://localhost/

匹配规则 A

访问 http://localhost/login

匹配规则 B

访问http://localhost/register

匹配规则 F

访问 http://localhost/static/a.html

匹配规则 C

访问 http://localhost/a.gif, http://localhost/b.jpg

匹配规则 D和规则 E,

但是规则 D 顺序优先

规则 E不起作用

访问 http://localhost/static/c.png

满足条件的有规则C,D,E

但由于~^/static/优先级高,故匹配规则C

访问 http://localhost/a.PNG

匹配规则 E,而不会匹配规则 D,

因为规则 E 不区分大小写

访问 http://localhost/category/id/1111

最终匹配到规则 F,因为以上规则都不匹配

location常用场景实战

实际使用中,至少有三个匹配规则定义,如下:

1.第一个必选规则:直接匹配网站根

通过域名访问网站首页比较频繁,

使用这个会加速处理

这里是直接转发给后端应用服务器了,

也可以是一个静态首页

第一个必选规则
location = / {
    proxy_pass http://locolhost/index
}

第二个必选规则:处理静态文件请求

这是 nginx 作为 http 服务器的强项处理静态文件请求,

有两种配置模式,

目录匹配或后缀匹配,

任选其一或搭配使用

location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}

第三个规则:通用规则

用来转发动态请求到后端应用服务器非静态文件请求就默认是动态请求,自己根据实际把握

location / {
    proxy_pass http://localhost/
}

禁止访问.sh后缀的文件实例

	server{
	......其他配置
	location ~.*\.(sh)${
		return 405;
	}
}

表示当访问 "*.sh"的文件就会返回405错误

php7进阶到架构师相关阅读

https://www.kancloud.cn/gofor/gofor

最后,欢迎大家留言补充,讨论~~~

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/168.html

标签: php 5.6 nginx
分享给朋友:

“5分钟搞懂nginx的location匹配规则” 的相关文章

Linux 安装 Alist 个人云盘 alpine linux安装

1. 简介云服务器有比较大的空间,想自己搭建一个个人云盘,做大文件的转存。其他百度云盘等的下载速度感人,不想充值会员。查询了一轮之后 Alist,Nextcloud,Cloudreve,ownCloud,Seafile等等看到了不少,但是很多都需要各种配置安装。要么是通过宝塔可以快速安装,但是我的服...

Linux 系统安装 Nginx

Linux 系统安装 NginxCentOS 7 Nginx 源代码编译安装# 官网下载最新版 https://nginx.org/en/download.html # 系统安装必备组件: yum install gcc gcc-c++ pcre pcre-devel zlib-devel ope...

使用nginx对视频、音频、图片等静态资源网址,加token签权

目前很多静态资源,都可以无权限验证,进行访问或转发,对有价值的资源进行签权,限制转发无法在代码中实现拦截,我们可以使用nginx对视频、音频、图片等静态资源网址,加token签权如:http://192.168.1.22/123.mp3http://192.168.1.22/123.m3u8http...

轻松搭建基于 Serverless 的 ThinkPHP 应用

ThinkPHP 是什么?ThinkPHP 是一个免费开源的,快速、简单的面向对象的轻量级 PHP 开发框架,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的。ThinkPHP 从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循 Apache2 开源许可...

技巧:PHP版本怎样隐藏在Linux服务器

通常情况下,大多数安装web服务器软件的默认设置存在信息泄露,这些软件其中之一就是PHP。PHP是如今最流行的服务端html嵌入式语言之一。而在如今这个充满挑战的时代,有许多黑客会尝试发现你服务端的漏洞。因此,ehowstuff网站一篇简单描述如何在Linux服务器中隐藏PHP信息值得关注。(图片来...

容器中Nginx高并发参数调优实战 nginx并发量过高怎么处理

在容器化的微服务架构中,Nginx作为反向代理和负载均衡器,常常需要承担高并发访问的压力。当并发连接数超过Nginx可处理的上限时,就会出现新连接被丢弃的情况。本文将详细介绍如何发现和定位这个问题,并通过调整内核参数和Nginx配置来解决。一、问题现象某Web服务在高并发场景下,偶尔会出现部分请求无...