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指令 (十四)