Nginx[location配置详情]

64 阅读1分钟

一、location的匹配语法以及规则

基本语法

location [=|^~|~|~*] uri { ... }

location的匹配语法分成两个部分,[]括号中的是匹配符,决定以何种方式进行匹配,uri表示请求路径,例如http://www.baidu.com:8081/index/的就是/abc/

匹配修饰符

匹配修饰符分为两种字符串匹配:= ^~正则匹配:~ ~*

  1. = :location = /index 匹配的就是/index,精确(严格)匹配
  2. ^~ : location ^~ /index/ 匹配的是以/index开头的就行,非正则匹配(依然遵循最大前缀匹配规则),匹配后就不继续匹配了
  3. ~ : location ~ index[0-9] 表示区分大小写的正则匹配 匹配 /index23 /aa/index23 /aa/index22/bb
  4. ~* : location ~* index[0-9] 表示不区分大小写的正则匹配 匹配 /index23 /aa/inDex2, 匹配后仍继续匹配,取最长规则命中

location 配置

location / { 
    root html;
    index index.html index.hml;
    try_files $uri /filePath...;
}

root 项目文件根路径 index 默认显示的文件,文件地址相对root配置 try_files 尝试以给定$uri响应请求,如果 $uri没有不存在,则使用下一个配置文件响应。如果所有给定的文件都没有则返回404。注意文件路径需要加/

url反向代理

location /index {
	// 这里只能替换ip和端口,即便设置成http://127.0.0.1:80/index2 也只替换ip和端口
	proxy_pass http://127.0.0.1:80; 
	//break 执行本条匹配后不在执行后面的匹配,一般用在server或if中
        //last 执行本条匹配后继续下次匹配
        //redirect 返回302临时重定向,地址栏会显示跳转后的地址;
        //permanent  返回301永久重定向,地址栏会显示跳转后的地址;
	rewrite /index /index2 break;
	// 使用正则表达式 $1为匹配到的值,在此为/index,本语句将/index => /index/index2
	rewrite ^\/index $1/index2;
}