修改 nginx.conf 中的 $uri
Modify $uri in a nginx.conf
在我的网络应用程序中,我让用户上传他们的头像,然后应用程序在后台调整他们的大小。这意味着用户(或在调整大小期间看到个人资料的任何用户)将看到损坏的头像,因为它尚未调整大小。
在我的应用程序中轻松解决此问题的一种方法是,如果调整后的图像不存在,则要求 nginx 渲染原始图像。
我正在考虑在我的 nginx.conf 中添加像 try_files $uri $original_uri =404;
这样的行,但我不知道如何创建 $original_uri
变量。
$uri 可能看起来像“users/42/thumb_avatar.jpg”,我需要将它转换成“users/42/avatar.jpg”。
所以我的问题是:有没有办法应用正则表达式或类似的东西来修改 nginx.conf 中的变量?
换句话说,您需要去除请求的 URI 中存在的 thumb_
前缀?使用 map
块(应放置在 server
块之外的 http
上下文中):
map $uri $original_uri {
~^(.*/)thumb_([^/]+)$ ;
}
server {
...
}
默认值(如果正则表达式模式不匹配)将是一个空字符串,这对于 try_files
指令是可以的。
在我的网络应用程序中,我让用户上传他们的头像,然后应用程序在后台调整他们的大小。这意味着用户(或在调整大小期间看到个人资料的任何用户)将看到损坏的头像,因为它尚未调整大小。
在我的应用程序中轻松解决此问题的一种方法是,如果调整后的图像不存在,则要求 nginx 渲染原始图像。
我正在考虑在我的 nginx.conf 中添加像 try_files $uri $original_uri =404;
这样的行,但我不知道如何创建 $original_uri
变量。
$uri 可能看起来像“users/42/thumb_avatar.jpg”,我需要将它转换成“users/42/avatar.jpg”。
所以我的问题是:有没有办法应用正则表达式或类似的东西来修改 nginx.conf 中的变量?
换句话说,您需要去除请求的 URI 中存在的 thumb_
前缀?使用 map
块(应放置在 server
块之外的 http
上下文中):
map $uri $original_uri {
~^(.*/)thumb_([^/]+)$ ;
}
server {
...
}
默认值(如果正则表达式模式不匹配)将是一个空字符串,这对于 try_files
指令是可以的。