今天有一位同学问到 Nginx 的站点多路径匹配的问题?

1.www.domain.com/a 需要返回 /var/www/domain.com/a/index.html

2.www.domain.com/b 需要返回 /var/www/domain.com/b/index.html

如何配置 Nginx 使之生效?

解决这个问题,第一的反映是直接使用 Nginx 的 location 指令来解决,不过在给出答案之前,我们先来了解一下 Nginx location 指令的基础。

Nginx 区块配置概念

在 Nginx 的配置文件中,通常会用两个常用的区块(Block)来进行设置:

1.Server 区块

2.Localtion 区块

这里的区块是指 Block,你甚至可以理解为后面的那一对{}之间的配置内容。

Sever 区块主要是真的主机的配置,比如配置主机的域名,IP,端口等内容。当然,在一个 Nginx 的配置文件里面,我们是可以指定多个 Sever 区块的配置的。

而 Location 区块则是在 Sever 区块里面,细分到针对不同的路径和请求而进行的配置。因为一个站点中的 URI 通常会非常多,所以在 Location 区块设置这部分,你也是可以写多个 Location 的配置的。

下面来看看 Location 配置的基本语法先:

?

上面的 optional_modifier 配置项是可以使用正则表达式的。常用的几种如下:

留空。对,留空也是一种设置方式。在留空的情况下,配置表示请求路径由 location_match 开始。

= ,等于号还是非常容易理解的:就是请求路径正好等于后面的 location_match 的值;跟第一项留空还是有区别的。

~,飘号(注意是英文输入的飘号)表示大小写敏感的正则匹配。

~*表示大小写不敏感的正则匹配。

^~ 表示这里不希望有正则匹配发生。

Nginx 处理 Location 区块的顺序

上面了解了 location 指令基本的概念和常用配置。我们再来看看 Location 生效的顺序!这个也很重要:

每一个请求进来 Nginx 之后,Nginx 就会选择一个 Location 的最佳匹配项进行响应,处理的具体流程是逐一跟 location 的配置进行比对,这个步骤可以分为以下几步:

先进行前缀式的匹配(也就是 location 的 optional_modifier 为空的配置)。

Nginx 其次会根据 URI 寻找完全匹配的 location 配置(也就是 location 的 optional_modifier 为 = 的配置).

如果还是没有匹配到,那就先匹配 ^~ 配置,如果找到一个配置的话,则会停止寻找过程,直接返回响应内容。

如果还是没有找到匹配项的话,则会先进行大小写敏感的正则匹配,然后再是大小不写敏感的正则匹配。

Nginx Location 配置的一些例子:

多说无益,看了那么多理论,没有具体的例子支撑也是白搭,所以我们来看一下具体的配置例子:

?

?

?

?

非常实用的两个例子:

1.简单的图片防盗链

?

2.针对一些可写入的路径,禁止 php 或者 js 的脚步执行

?

问题的答案

最后,我们再看问题的答案,可以是类似这个样子的:

?

原文链接:https://segmentfault.com/a/1190000014866603

php localtion,详解Nginx Location配置相关推荐

  1. 详解 nginx location ~ .*\.(js|css)?$ 什么意思?

    location 是用来匹配用的,匹配到就处理括号里的事件 语法规则: location [=|~|~*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头 ...

  2. 详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就 ...

  3. 从一份配置清单详解Nginx服务器配置

    概述 在前面<Nginx服务器开箱体验> 一文中我们从开箱到体验,感受了一下Nginx服务器的魅力.Nginx是轻量级的高性能Web服务器,提供了诸如HTTP代理和反向代理.负载均衡.缓存 ...

  4. 详解 nginx 配置文件及构建 web 虚拟主机

    详解 nginx 主配置文件.添加服务及构建 web 虚拟主机 一.添加为系统服务 1.方法一 2.方法二 二.nginx 主配置文件 nginx.conf 1.全局配置 2.I/O 事件配置 3.H ...

  5. iis7 php 403,详解Nginx 出现 403 Forbidden 的解决办法

    本篇文章主要介绍了详解Nginx 出现 403 Forbidden 的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 Nginx 也是当前流行的一款 轻量级服务器 ...

  6. K8SPod详解之pod配置

    K8SPod详解之pod配置 Pod定义 Pod配置 pod.spec.containers 基本配置 镜像拉取 启动命令 环境变量 端口设置 资源配额 每个pod中都可以包含一个或者多个容器,这些容 ...

  7. 详解nginx服务器绑定域名和设置根目录的方法

    主要介绍了详解nginx服务器绑定域名和设置根目录的方法,nginx服务器绑定域名以及设置根目录非常方便,小 编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 nginx服务器 ...

  8. linux下nginx启动不了,详解Nginx启动失败的几种错误处理

    使用Nginx做Web服务器过程中,碰到过以下几个问题: 1.nginx启动失败 启动nginx失败,报错信息如下: Starting nginx: nginx: [emerg] bind() to ...

  9. 详解nginx代理天地图做缓存解决跨域问题

    这篇文章主要介绍了详解nginx代理天地图做缓存解决跨域问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 作为一个GISer开发者,天地图是经常在项目中以底图的形式出现 ...

最新文章

  1. java list翻转_浅谈Java数据结构中的常见问题
  2. 混沌模型时间序列预测
  3. 网易云信SDK V3.1.0版本发布啦
  4. Blender建模与游戏换装(转载文)
  5. 使用Linux自定义自动补全命令完善自己的shell脚本
  6. Idea中上传项目到Github
  7. 他山之石——VBA SQL基础
  8. 系统崩溃怎么重装系统Win10?
  9. 项目经理如何做好授权管理?
  10. Monkey测试黑白名单
  11. 鼠标悬停出现二维码动画放大,url转二维码
  12. 休息时间!哪些业余活动能提升开发人员的技能?
  13. 摄像机投影成像 matlab,使用matlab仿真三维物点的透视投影成像.doc
  14. 【LSSVM回归预测】基于matlab灰狼算法优化最小支持向量机GWO-LSSVM数据预测【含Matlab源码 2259期】
  15. 拆机详解2:比Macintosh还早?苹果Lisa拆解
  16. 【PPic】在PPic图床中如何配置使用七牛
  17. PowerVM 高级功能——N_PIV
  18. 安拆网:钢管扣件检测标准是什么?
  19. 产业园以商招商实施方案
  20. VMware ESXi 7.0 U3i macOS Unlocker OEM BIOS (标准版和厂商定制版)

热门文章

  1. vfatfs.sys加载
  2. SQL Server 2012入门T-SQL基础篇:(2)SQL的两个基础概念
  3. Surrounded Regions
  4. 垃圾代码评析——关于《C程序设计伴侣》9.4——链表(四)
  5. UVA 10519 !! Really Strange !!
  6. nyoj1180Maze
  7. NYOJ 1067 Compress String(区间dp)
  8. 暴力求解法 之 简单枚举
  9. docker内手动安装python环境
  10. CentOS 7.6 64位安装docker并设置开机启动