您好,登录后才能下订单哦!
    server{
        location = \ {
            [配置A]
        }
        location / {
            [配置B]
        }
        location = /images/ {
            [配置C]
        }
        location ^~ /static/{
            [配置D]
        }
        localtion ~* \.(gif|jpg|png){
            [配置E]
        }
}
语法:
location  = | ~ | ~* | ^~ | @  /url/{       //注意 =、~、~*、^~ 、@是location的匹配规则,”|“表示或者
“
    ......省略其他配置
}
规则说明:
| 符号 | 含义 | 
|---|---|
| = | 字面精准匹配,如果匹配,则跳出匹配过程(不再进行正则匹配) | 
| ~ | 开头区分大小写的正则匹配 | 
| ~* | 开头不区分大小写的正则匹配 | 
| ^~ | 开头表示uri以某哥常规字符串开头,理解为匹配url路径即可 | 
| / | 通用匹配,在没有正则表达式匹配时,任何请求都会匹配到 | 
| @ | 不是普通的location匹配,用于location内部重定向的变量 | 
| ~ | 开头区分大小写的正则匹配 | 
多个location配置的匹配顺序:
注意:每次匹配成功后,停止匹配,会按照本匹配的location处理请求
按照上面实例进行说明匹配顺序:
location = \ {
    [配置A]
}location ^~ /static/{
        [配置D]
    }如果以上无任何匹配项则会选择通用选项,并按照所匹配的配置B进行处理请求:
location / {
        [配置B]
    }
location = / {
    root /var/ww/html/;
}
此规则表示只匹配以默认地址进行访问的请求,访问地址:http://NginxIP/
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,会匹配到这条规则
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;
        }
    }
语法:
    rewrite     regex       replacement     [flag]
rewrite:rewrite重写的关键字不可省略
regex:这里写的是正则表达式
replacement:这里是重新内容
flag:这里是最后的flag标记
flag标记说明:
| flag标记 | 说明 | 
|---|---|
| last | 也就是apache里的(L)标记,表示完成rewrite,URL地址不会改变 | 
| break | 本条规则匹配成功后,会停止匹配,不再匹配后面的规则,URL地址不会改变 | 
| redirect | 返回302临时重定向,浏览器地址会显示跳转后的URL地址 | 
| permanent | 返回301永久重定向,浏览器地址栏显示跳转后的URL地址,Nginx返回response状态码301 | 
相关符号说明:
| 符号 | 说明 | 
|---|---|
| * | 代表前面0或者多个字符 | 
| + | 代表前面1或者多个字符 | 
| ? | 代表前面0或1个字符 | 
| ^ | 代表字符串的开始位置 | 
| $ | 代表字符串结束位置 | 
| $n | 代表字符串结束第n个参数 | 
| . | 通配符,代表任何字符 | 
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】表示转换后目录名称
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"目录下的文件,改变访问的地址
server{
    location ~//.ht {
         deny all;
       }
   }
| 参数 | 介绍 | 
|---|---|
| -f | 判断文件是否存在 返回值true为存在 | 
| !-f | 判断文件是否存在 返回值false为不存在 | 
| -d | 判断目录是否存在 返回值true为存在 | 
| !-d | 判断目录是否存在 返回值true为不存在 | 
| -e | 判断文件或目录是否存在 返回值true为存在 | 
| !-e | 判断文件或目录是否存在 返回值true为不存在 | 
| -x | 判断文件是否可执行 返回值true为可执行 | 
| !-x | 判断文件是否可执行 返回值true为不可执行 | 
举例说明:
    server{
        listen 80;
        server_name www.jkyst.xyz;
        if(!-e $request_filename){
            rewrite  ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
        }
    }
判断文件或目录是否存在
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。