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" |
草都可以从石头缝隙中长出来更可况你呢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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的强缓存和协商缓存
· 一文读懂知识蒸馏