修改 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 指令是可以的。