nginx转发配置详解Nginxlocation配置分析nginx转发配置
Nginx——location常见配置指令alias、root、proxy_pass
前面说出了一篇关于Nginx安装的文章,这篇就这说下关于Nginx中location的配置,这个很重要。
日常使用中会遇到一个nginx指向不同的系统。页面也好,接口也好,都会进行location的路径匹配和下发,如果location的路径配置规则和优先级不清楚的话,会很麻烦。言归正传,下面开始。
01【alias】
别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:
location/test/{
alias/home/sftp/img/;
}
即:请求/test/1.jpg(省略了协议与域名),将会返回文件/home/sftp/img/1.jpg。
02【root】
根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【root】配置的路径,并把location配置路径附加到其后。如:
location/test/{
root/home/sftp/img/;
}
即:请求/test/1.jpg(省略了协议与域名),将会返回文件/home/sftp/img/test/1.jpg,相较于alias,使用root会把/test/附加到根目录之后。
即:请求/test/1.jpg(省略了协议与域名),将会返回文件/home/sftp/img/1.jpg。
03【proxy_pass】
反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/"有关,有"/"则不附加,如:
location/test/{
proxy_passhttp://127.0.0.1:8080/;
}
即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)。
location/test/{
proxy_passhttp://127.0.0.1:8080;
}
即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/test/1.jpg(附加/test/路径)。
location/test/{
proxy_passhttp://127.0.0.1:8080/img;
}
即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img1.jpg(未附加/test/路径,但附加了/test/之后的路径)。
03location语法规则
location[=||*|^~]/uri/{…}
匹配优先级
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
1.精确匹配=
2.前缀匹配^~
3.按文件中顺序的正则匹配
4.匹配不带任何修饰的前缀匹配
5.交给/通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求
注意:前缀匹配,如果有包含关系时,按最大匹配原则进行匹配。比如在前缀匹配:location/dir01与location/dir01/dir02,如有请求将最终匹配到location/dir01/dir02示例
nginx配置示例:
location=/{
echo"规则A";
}
location=/login{
echo"规则B";
}
location^~/static/{
echo"规则C";
}
location^~/static/files{
echo"规则X";
}
location~\.(gif|jpg|png|js|css)${
echo"规则D";
}
location~*\.png${
echo"规则E";
}
location/img{
echo"规则Y";
}
location/{
echo"规则F";
}
那么产生的效果如下:
访问根目录/,比如将匹配规则A
访问将匹配规则B,http://localhost/register则匹配规则F
访问将匹配规则C
访问将匹配规则X,虽然规则C也能匹配到,但因为最大匹配原则,最终选中了规则X。你可以测试下,去掉规则X,则当前URL会匹配上规则C。
访问将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而则优先匹配到规则C
访问则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
访问会匹配上规则D,虽然规则Y也可以匹配上,但是因为正则匹配优先,而忽略了规则Y。
访问会匹配上规则Y。
访问则最终匹配到规则F,因为以上规则都不匹配,这个时候应该是Nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),Nginx作为反向代理服务器存在。
-
打印机已连接但无法打印打印机连接正常打印没反应的解决方法打印机已连接但是无法打印什么原因
打印机不能打印的问题,还是有挺多原因的,想知道是什么原因造成的,要逐...
-
小米手机无法启动小米手机开不了机怎么办教你一招解决小米手机开不开机怎么回事求帮助
小米用户在使用过程中,可能会遇到手机开不了机的情况。这是怎么回事呢?...
-
海信电视不识别u盘apk电视无法识别u盘apk文件终极方法海信电视不识别u盘里的apk文件
近日,有用户反映自己在安装第三方软件时遇上了问题,电视识别不了apk...
-
地铁工作人员工资是多少
地铁的一线工作人员月工资差不多能在5000以上,公积金1500-25...
-
电脑一直正在启动windows怎么办电脑开机停留在启动界面怎么办电脑启动时一直停留在"正在启动windows"界面
很多时候,我们在打开电脑时,一开机,电脑进行开机启动画面就不动了,一...
- 最近发表
- 网站分类