nginx 的precontent阶段的ngx_http_try_files_module模块与mirrors模块介绍

指令介绍

1
2
3
4
Syntax: try_files file ... uri;
try_files file ... =code;
Default: —
Context: server, location

  依次试图访问多个URI对应得文件(由root或者alias指令指定),当文件存在时直接返回内容,如果所有文件不存在,则按最后一个URL结果或者code返回

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
        server_name  try_files.com;
        root html/;
        default_type text/plain;
        location /first {
                try_files /system/maintenance.html  #找磁盘文件;找不到磁盘文件是
                $uri $uri/index.html $uri.html#找$URI也就是去找html/first有没有这个文件;匹配不到是;找first/下面有没index.html;
                @lasturi; #最后匹配这个
        }
        location @lasturi {
                return 200 'lasturi!\n';
        }
        location /second {
                try_files $uri $uri/index.html $uri.html =404;
        }
}

  测试

1
2
[root@python vhast]# curl try_files.com/first
lasturi!

  mirrors 模块流量拷贝

功能:处理请求时生成子请求对子请求的返回结果不做处理

指令

1
2
3
4
5
6
Syntax: mirror uri | off;  #uri表示将请求复制到另一个地址
Default: mirror off;
Context: http, server, location
Syntax: mirror_request_body on | off;  #mo
Default: mirror_request_body on;
Context: http, server, location

  实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@python vhast]# cat mirrors.conf
server {
    server_name mirrors.com;
    error_log logs/mirrors_error.log debug;
    location /{
        mirror /mirror;
        mirror_request_body off;
    }
    location = /mirror {
        internal; #指定为内部请求
        proxy_pass http://127.0.0.1:10020$request_uri;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }
}
 
[root@python vhast]# cat test-2.conf
server {
    listen 10020;
    location / {
        return 200 "mirror response!";
    }
}

  测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@python vhast]# echo "mirror" > ../../html/mirror.txt
[root@python vhast]# curl mirrors.com/mirror.txt
mirror
[root@python vhast]# tail ../../logs/access.log
127.0.0.1 - - [10/Jul/2019:11:56:22 +0800] "GET / HTTP/1.0" 200 16 "-" "curl/7.29.0"
192.168.183.4 - - [10/Jul/2019:11:56:22 +0800] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0"
127.0.0.1 - - [10/Jul/2019:11:59:07 +0800] "GET /mirror.txt HTTP/1.0" 200 16 "-" "curl/7.29.0"
192.168.183.4 - - [10/Jul/2019:11:59:07 +0800] "GET /mirror.txt HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [10/Jul/2019:11:59:08 +0800] "GET /mirror.txt HTTP/1.0" 200 16 "-" "curl/7.29.0"
192.168.183.4 - - [10/Jul/2019:11:59:08 +0800] "GET /mirror.txt HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [10/Jul/2019:11:59:09 +0800] "GET /mirror.txt HTTP/1.0" 200 16 "-" "curl/7.29.0"
192.168.183.4 - - [10/Jul/2019:11:59:09 +0800] "GET /mirror.txt HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [10/Jul/2019:12:30:55 +0800] "GET /mirror.txt HTTP/1.0" 200 16 "-" "curl/7.29.0"
192.168.183.4 - - [10/Jul/2019:12:30:55 +0800] "GET /mirror.txt HTTP/1.1" 200 7 "-" "curl/7.29.0"

  

posted @   烟雨楼台,行云流水  阅读(602)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示