Nginx服务
对非同源地址的nginx配置要求
http同端口访问http跳转https(497错误)
关于Nginx 的 location 匹配规则总结
Nginx+LUA+Redis实现token访问鉴权
Nginx实现后端Server域名动态解析
Nginx反向代理跨域问题
浏览器报错ERR_CONTENT_LENGTH_MISMATCH
Nginx常见HTTP Code错误排查
使用acme.sh部署证书至Nginx
Nginx在普通用户下使用特权端口 (443端口)
Nginx配置自定义状态页
try_files和alias的组合使用
Nginx中301重定向导致端口丢失
本文档使用 MrDoc 发布
-
+
home page
try_files和alias的组合使用
当处理文件服务时,可能会遇到需要通过 Nginx 进行路径映射的情况。 在这种情况下,使用 try_files 结合 alias 可以非常有用。 ## 一、官方说明 ``` Syntax: try_files file ... uri; try_files file ... =code; Default: — Context: server, location ``` 检查文件的存在顺序,并使用找到的第一个文件进行请求处理;处理在当前上下文中执行。文件的路径根据root和alias指令构建文件参数。 通过在名称末尾指定斜杠(例如"$uri/"),可以检查目录的存在。如果没有找到任何文件,则会内部重定向到最后一个参数中指定的 URI。例如: ``` location /images/ { try_files $uri /images/default.gif; } location = /images/default.gif { expires 30s; } ``` 最后一个参数也可以指向一个 “location” 块,如下面的示例所示。 从版本0.7.51开始,最后一个参数还可以是一个 “code” 块: ``` location / { try_files $uri $uri/index.html $uri.html =404; } ``` Mongrel的代理示例: ``` location / { try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel; } location @mongrel { proxy_pass http://mongrel; } ``` ## 特别说明 **文件的路径根据root和alias指令构建文件参数。** URL访问地址: http://localhost/system/images/test.png **root** 的最终访问路径是: root的配置目录+请求的URI的拼接: - 当root 配置为/data/images/, Nginx的位置块配置为 /system/images/时 - nginx拼接的地址: `/data/images/system/images/test.png` **alias** 的最终访问路径是 root的配置目录+请求的URI的拼接: - 当alias 配置为/data/images/, Nginx的位置块配置为 /system/images/时 - nginx拼接的地址: `/data/images/test.png` ## 二、 配置说明 ### 场景需求示例 用户访问地址:`http://www.example.com/system/images/png/20240101/test.png` 实际文件存储在`/data/images/waterMark/png/20240101/test.png` Nginx 配置如下: ``` location ~ /system/images/(.*\.)(jpeg|png|gif|jpg)$ { # 需要注意的是这里不能加$1$2,否则会直接到try_files alias /data/images/waterMark/; # 依次按顺序查找并返回,最后访问waterMark位置块并返回结果 # 这里可以在try_files后配置 $uri 但无效 try_files /$1$2 @waterMark; } location @waterMark { return 404; } ``` 这个配置的作用是当访问 /system/images/ 路径时,会将请求交给内部的图片处理位置。这个位置会根据正则表达式匹配图片文件后缀,并使用 alias 指令将请求映射到实际存储路径下的图片文件。如果图片文件不存在,则会跳转到错误处理位置,返回404页面。
Nathan
March 21, 2024, 2:08 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password