Joh*_*nta 11 rewrite nginx images
我试图根据文件的扩展名重写请求 uri,然后仅从 uri 中提取文件名并将其存储在另一个文件夹中。这里的问题是文件名和可用变量没有预定义的变量uri,request_uri并且request_filename会给出完整的 uri。
server{
set $file_folder D:/nginx-1.0.15/imageAll/;
location ~*+.(gif|jpg)$ {
try_files $uri @imgstore;
}
location @imgstore {
proxy_pass $file_folder$request_filename;
proxy_store on;
proxy_temp_path /nginx-1.0.15/images/;
proxy_store_access user:rw group:rw all:r;
}
}
Run Code Online (Sandbox Code Playgroud)
我能做的最好的事情就是获得扩展名 .jpg 或 .gif,当我把$1它放在$request_filename这样的地方时:
location @imgstore {
proxy_pass $file_folder$1;
}
Run Code Online (Sandbox Code Playgroud)
所以,我想知道:
kol*_*ack 18
您想要来自原始请求的文件名,还是来自当前 uri(在任何内部重定向之后)?它们都可以使用map 模块:
# Gets the basename of the original request
map $request_uri $request_basename {
~/(?<captured_request_basename>[^/?]*)(?:\?|$) $captured_request_basename;
}
# Gets the basename of the current uri
map $uri $basename {
~/(?<captured_basename>[^/]*)$ $captured_basename;
}
Run Code Online (Sandbox Code Playgroud)
然后只需在需要的地方使用 $request_basename 或 $basename 即可。请注意,映射必须在 http{} 上下文中定义,使它们成为服务器的兄弟。{}
| 归档时间: |
|
| 查看次数: |
15378 次 |
| 最近记录: |