nginxlocation匹配及rewrite规则
建站服务器 location匹配规则 1. 实例
server{
location = \\ {
[配置A]
}
location / {
[配置B]
}
location = /images/ {
[配置C]
}
location ^~ /static/{
[配置D]
}
localtion ~* \\.(gif|jpg|png){
[配置E]
}
}
2. location语法规则语法:
景宁畲族自治网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。location = | ~ | ~* | ^~ | @ /url/{ //注意 =、~、~*、^~ 、@是location的匹配规则,”|“表示或者
“
......省略其他配置
}
规则说明:
多个location配置的匹配顺序:
首先匹配:"=" 其次匹配:"^~" 再匹配:文件location书写顺序 最后把所有请求交给通配符("/")注意:每次匹配成功后,停止匹配,会按照本匹配的location处理请求
按照上面实例进行说明匹配顺序:
首先对比第一个location,如果匹配就会停止匹配,并按照配置A进行处理请求:location = \\ {
[配置A]
}
其次对比第二个location,如果匹配就会停止匹配,并按照配置D进行处理请求:
location ^~ /static/{
[配置D]
}
再按照顺序依此进行对比,直到找到匹配的才会停止,并按照所匹配的配置*进行处理请求
如果以上无任何匹配项则会选择通用选项,并按照所匹配的配置B进行处理请求:
location / {
[配置B]
}
3. 应用举例
精准规则(=)
location = / {
root /var/ww/html/;
}
此规则表示只匹配以默认地址进行访问的请求,访问地址:http://NginxIP/
匹配url路径(^~)location ^~ /static/ {
root /var/www/html/static;
}
此规则表示只匹配以" /static/ "开头的地址进行访问的请求,访问地址:https://cache.yisu.com/upload/information/20200214/32/673.jpg | .gif | *.jpg "的文件,访问地址:https://cache.yisu.com/upload/information/20200214/32/674.jpg
location ~* /Test/ {
root /var/www/html/;
}
此规则表示匹配url地址中存在Test的访问请求,不区分大小写test也可以,访问地址:http://NginxIP/test/
区分大小写(~)location ~ /Test/{
root /var/www/html/;
}
此规则表示匹配url地址中存在Test的访问请求,区分大小写,test是进行匹配的,访问地址:http://NginxIP/Test/
默认匹配(所有规则都可匹配)location / {
root /var/www/html;
}
此规则为默认匹配,他可以匹配所有以默认地址访问的链接,访问地址:http://NginxIP/login.html
内部跳转(@)location @index_error{
root /var/www/error/
}
此规则表示匹配以 "/index/ "开头的请求,如果链接状态404,会匹配到这条规则
rewrite规则详解nginx的rewrite功能和apache一样,rewrite的主要功能是实现RUL地址的重定向。Nginx的rewrite功能是由PCRE软件支持,rewrite模块即ngx_http_rewrite_module
模块。从某种意义上可以说为了美观或者搜索引起的友好搜索,提高排名等
server{
listen 80;
server_name www.jkyst.xyz jkyst.xyz;
if($host != \'www.jkyst.xyz\' ){
rewrite ^/(.*)$ http://www.jkyst.xyz/$1 permanent;
}
location ~.*\\.(png|gif|jpg){
return 403;
}
}
2.rewrite语法规则语法:
rewrite regex replacement [flag]
rewrite:rewrite重写的关键字不可省略
regex:这里写的是正则表达式
replacement:这里是重新内容
flag:这里是最后的flag标记
flag标记说明:
相关符号说明:
server{
listen 80;
server_name www.jkyst.xyz jkyst.xyz abc.jkyst.xyz;
if($host != \'www.jkyst.xyz\'){
rewrite ^/(.*)$ http://www,jkyst.xyz/$1 permanent;
}
}
当访问 "abc.jkyst.xyz" 时会自动跳转到 "www.jkyst.xyz",这里出现 "if" 语句用于判断,判断结果为true则执行语句内部的 rewrite重写
当文件不存在时重定向到指定文件server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
}
}
当访问 "test" 目录下的文件或目录不存在时,则跳转到 "test1"下面的此文件或者目录,跳转后会将URL进行转换
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ index.html last;
}
}
表示当访问 "test" 目录下的文件或目录不存在时,则重定向到 "index.html"文件,跳转后URl不会进行转换
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/([0-9a-z]+)/([0-9a-z]+)/(.*)$ http://www.jkyst.xyz/test/$1$2$3 permanent;
}
}
目录切换,表示将原目录转换成其他目录,【0-9a-z】表示转换后目录名称
禁止访问.sh后缀的文件server{
......其他配置
location ~.*\\.(sh)${
return 405;
}
}
表示当访问 "*.sh"的文件就会返回405错误
匹配用户浏览器代理信息server{
listen 80;
server_name www.jkyst.xyz;
if ( $http_user_agent ~* (Android)|(iPhone)){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test/$1 permanent;
}
}
表示当匹配到浏览代理为Android和iPhone时进行重定向 "test"目录下的文件,改变访问的地址
禁止htaccessserver{
location ~//.ht {
deny all;
}
}
4.文件目录匹配
举例说明:
server{
listen 80;
server_name www.jkyst.xyz;
if(!-e $request_filename){
rewrite ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
}
}
判断文件或目录是否存在
文章标题:nginxlocation匹配及rewrite规则
链接分享:http://ybzwz.com/article/chdhsj.html