为什么80%的码农都做不了架构师?>>>   

语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

~ 开头表示区分大小写的正则匹配

~*  开头表示不区分大小写的正则匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/ 通用匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

例子,有如下匹配规则:

1

location = / {精确匹配,必须是127.0.0.1/

#规则A

}

location = /login {精确匹配,必须是127.0.0.1/login

#规则B

}

location ^~ /static/ {非精确匹配,并且不区分大小写,比如127.0.0.1/static/js.

#规则C

}

location ~ \.(gif|jpg|png|js|css)$ {区分大小写,以gif,jpg,js结尾

#规则D

}

location ~* \.png$ {不区分大小写,匹配.png结尾的

#规则E

}

location !~ \.xhtml$ {区分大小写,匹配不已.xhtml结尾的

#规则F

}

location !~* \.xhtml$ {

#规则G

}

location / {什么都可以

#规则H

}

那么产生的效果如下:

访问根目录/, 比如http://localhost/ 将匹配规则A

访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

访问 http://localhost/static/a.html 将匹配规则C

访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C

访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。

访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。

访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

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

#这里是直接转发给后端应用服务器了,也可以是一个静态首页

# 第一个必选规则

location = / {

proxy_pass http://tomcat:8080/index

}

# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项

# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

location ^~ /static/ {

root /webroot/static/;

}

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {

root /webroot/res/;

}

#第三个规则就是通用规则,用来转发动态请求到后端应用服务器

#非静态文件请求就默认是动态请求,自己根据实际把握

#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了

location / {

proxy_pass http://tomcat:8080/

}

未试验过的其他信息:

三、ReWrite语法
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
1、下面是可以用来判断的表达式:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
2、下面是可以用作判断的全局变量
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php
四、Redirect语法
server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if ($http_host !~ “^star\.igrow\.cn$&quot {
rewrite ^(.*) http://star.igrow.cn$1 redirect;
}
}
五、防盗链location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}
六、根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
七、禁止访问某个目录
location ~* \.(txt|doc)${
root /data/www/wwwroot/linuxtone/test;
deny all;
}

++ 一些可用的全局变量
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri

转载于:https://my.oschina.net/foxeye/blog/644345

Nginx-location常用配置相关推荐

  1. Nginx的常用配置

    Nginx配置文件结构 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为 nobody user root; worker进程工作数设置,一般来说 ...

  2. 关于Nginx location中配置proxy_pass转发时斜线'/'导致的404问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Nginx location通用匹配规则中配置proxy_pass转发时,假设有如下location配置: location ...

  3. nginx location 在配置中的优先级

    转载:http://blog.csdn.net/xy2204/article/details/47749405 先来一张nginx模型图                                ...

  4. [转]简明 Nginx Location Url 配置笔记

    基本配置 为了探究nginx的url配置规则,当然需要安装nginx.我使用了vagrant创建了一个虚拟环境的ubuntu,通过apt-get安装nginx.这样就不会污染mac的软件环境.通过vr ...

  5. Nginx 配置文件常用配置详解

    目录 一.用户权限配置 二.工作进程数量配置 三.客户端连接数设置 四.提高文件传输效率 五.请求保持时间 六.文件压缩 七.虚拟服务器 八.添加新的虚拟机并设置不同的启动页 nginx的配置文件在c ...

  6. Nginx 常用配置汇总,从入门到干活足矣

    点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! 众所周知,Nginx 是 Apache服务不错的替代品.其特点是占有内存少,并发能力强,事实上 Ngin ...

  7. Nginx-windows下nginx安装、配置与使用

    目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...

  8. Nginx负载均衡常用配置

    搭建实验环境(使用docker部署两台nginx容器) 1)使用搭建第一台nginx服务 [root@linux-node4 ~]# docker container run -d --name we ...

  9. php localtion,详解Nginx Location配置

    今天有一位同学问到 Nginx 的站点多路径匹配的问题? 1.www.domain.com/a 需要返回 /var/www/domain.com/a/index.html 2.www.domain.c ...

  10. nginx location 匹配 多个规则_你需要知道的Nginx配置二三事

    Nginx是俄罗斯人Igor Sysoev基于C语言编写的十分轻量级的HTTP服务器,它主要有以下特点: 它是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 ...

最新文章

  1. Spring保存文件到MongoDB之GridFS支持
  2. Vue学习笔记(5)(Vuex)
  3. 细聊冗余表数据一致性(架构师之路)
  4. Android日期格式化
  5. 【“新智认知”杯上海大学联赛】D-CSL的字符串(贪心)
  6. Android使用Zxing库生成PDF417扫描后多一个字符A
  7. 电子通信协议之SPI通信协议篇
  8. android 照片加水印,Android实现为图片添加水印
  9. 百度(杭州)创新中心人工智能产业论坛落幕,看AI如何引发行业革命
  10. fastdfs断点续传
  11. 零基础如何入门激光SLAM
  12. 5步完成编写Mysql的shell脚本
  13. android gms认证之run host test,Android GMS认证项总结
  14. ps教程:教你如何制作一种牛仔布料
  15. tampermonkey如何寻找_Tampermonkey脚本安装问题及自用脚本推荐
  16. html电话号码表单验证,表单验证电话号码模式html5(Form Validation phone number pattern html5)...
  17. SpringCloud 微服务开放平台接口
  18. 1 python数据分析概述
  19. 如何用 Redis 查询 “附近的人” ?
  20. ctfshow菜鸡杯 部分wp

热门文章

  1. LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)
  2. 英特尔分布式深度学习平台Nauta-安装、配置与管理指南
  3. Linux基础命令---添加/删除组
  4. man手册查找ascii码和运算符优先级
  5. 【Runtime Error】打开Matlib7.0运行程序报错的解决办法
  6. 无线路由器配置不佳 可耗净手机电量
  7. 【extjs6学习笔记】1.1 初始:创建项目
  8. 部署 instance 到 VXLAN - 每天5分钟玩转 OpenStack(112)
  9. NHibernate 基本配置 (第一篇)
  10. 为jQuery写插件