Nginx HTTP模块篇 precontent阶段的try_files和mirror指令 (十四)-张柏沛IT博客

正文内容

Nginx HTTP模块篇 precontent阶段的try_files和mirror指令 (十四)

栏目:Linux 发布时间:2020-02-15 21:40 浏览量:302

precontent阶段


11个阶段中经过的模块

 

try_files 指令

上下文:server,location 

try_files file1|uri1 file2|uri2 ... file n|uri n [=code];

可以跟文件或者URI(如果是文件,则接着root或者alias定义的路径),它会一个个的尝试找。如果找到了就不再往下找。如果都找不到,可以在最后加一个4xx或者5xx的状态码。

如果try_files后面跟的是目录,要在后面加上/

例子:

server {
    listen 8080;
    server_name limit.zbpblog.com;
    root /var/www/html;
    autoindex on;
    
    location /test {
        try_files /system/maintenance.html $uri.html $uri/index.html $uri/test.html $uri/ @lasturl;     #$uri/是表示目录,如果不加/表示文件
    }   
    
    location @lasturl {
        return 200 "lasturl!";
    }
}

假如输入的网址是 http://limit.zbpblog.com:8080/test
$uri就是"/test"

http://limit.zbpblog.com:8080/test1
$uri就是"/test1"

尝试在 /var/www/html中创建
/system/maintenance.html
/test.html
/test/index.html
/test/test.html
再删除
然后一个个的访问http://limit.zbpblog.com:8080/test进行测试


mirror模块
该模块用于复制流量,通过反向代理的方式请求上游服务。
相当于用户访问A,A也会产生子请求(复制一模一样的请求)去访问B。B是上游服务。

mirror uri|off;
mirror_request_body on|off;

示例:

server {
    listen 8001;
    server_name mirror.zbpblog.com;
    
    location / {
        mirror /mirror;     # 复制流量到 /mirror
        
        mirror_request_body off;  # 不复制请求体
    }
    
    location = /mirror {
        internal;
        proxy_pass http://127.0.0.1:8002$request_uri;   # 指定上游服务为127.0.0.1:8002,请求的URI和mirror.zbpblog.com:8001的完全相同
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }
}

server {
    listen 8002;
    
    location / {
        return 200 "mirror response";
    }
}

 

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > Nginx HTTP模块篇 precontent阶段的try_files和mirror指令 (十四)

热门推荐
推荐新闻