0

0

Nginx中Location的配置方法

不言

不言

发布时间:2018-07-07 16:30:24

|

4228人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了关于nginx中location的配置方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

今天有一位同学问到 Nginx 的站点多路径匹配的问题?1.www.domain.com/a 需要返回 /var/www/domain.com/a/index.html2.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 配置的基本语法先:

location optional_modifier location_match {
 # 这个 {} 里面的配置内容就是一个区块 Block
}

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

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

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

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

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

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

Nginx 处理 Location 区块的顺序

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

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

WaStar 网上花店系统
WaStar 网上花店系统

系统特点: 商品多级分类检索、搜索,支持同一商品多重分类,自由设置显示式样 自由设置会员类型,自由设置权限项目,自由分配每种会员类型和每个会员的权限 灵活的商品定价,最多12级价格自由分配给各种会员类型或会员,也可针对单会员单商品特殊定价 强大的会员管理、帐户管理、订单管理功能和一系列帐务查询统计功能 灵活的会员积分系统,自由设置每个积分事件的积分计算方法 灵活的网站内容发布、管理系统,每个栏目可

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

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

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

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

Nginx Location 配置的一些例子:

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

location  = / {
  # = 等号配置符,只匹配 / 这个路由
}
location /data {
   # 留空配置,会匹配有 /data 开始的路由,后续有匹配会往下匹配。
}
location ^~ /img/ {
  # 注意 ^~ 配置,这里匹配到 /img/ 开始的话,直接就返回了。
}
location ~* .(png|gif|ico|jpg|jpeg)$ {
  # 匹配以 png, gif, ico, jpg or jpeg 结尾的请求;这个通常用来设置图片的请求响应。 
}

非常实用的两个例子:

1.简单的图片防盗链

location ~ .(png|gif|jpe?g)$ {
  valid_referers none blocked yourwebsite.com *.yourwebsite.com;
  # 注意上面写上你的域名就好  
  if ($invalid_referer) {
      return   403;
  }
}

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

location ~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$ {
  return 403;
}

问题的答案

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

location /a {
   root /var/www/domain.com/a;
}

location /b {
   root /var/www/domain.com/b;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

使用nginx在一台服务器部署多个Web Server

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

131

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

43

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

49

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号