我正在尝试将位置网址与此格式进行匹配/v1/images/{path1}/fetch?imageUrl={imageUrl}
,并且我成功地用这段代码做到了这一点
location ~ ^/v1/images/(?<path1>[^/]+)/fetch {
if ($args ~* "imageUrl=.*") {
set $path1 $arg_path1;
set_sha1 $variable $arg_imageUrl;
set $imageUrl "https://testing.com/test/images/$variable/$path1.$image_ext";
return 200 $imageUrl;
add_header Content-Type text/plain;
proxy_pass $imageUrl;
access_log /etc/nginx/conf.d/log_file.log traffic;
}
}
但是,我应该在响应中返回 path1 变量的值,但我什么也没得到。我不确定为什么它没有在这里返回,因为它也是请求的一部分。我做错了什么吗?
答案1
您的 Nginx 配置似乎缺少path1
在响应中返回变量值的部分。您可以添加add_header
指令以将path1
变量包含在响应标头中。
例子:
location ~ ^/v1/images/(?<path1>[^/]+)/fetch {
if ($args ~* "imageUrl=.*") {
set $path1 $arg_path1;
set_sha1 $variable $arg_imageUrl;
set $imageUrl "https://testing.com/test/images/$variable/$path1.$image_ext";
add_header X-Path1 $path1; # add this line to include path1 in the response header
return 200 $imageUrl;
add_header Content-Type text/plain;
proxy_pass $imageUrl;
access_log /etc/nginx/conf.d/log_file.log traffic;
}
}