为什么请求参数没有在响应中返回?

为什么请求参数没有在响应中返回?

我正在尝试将位置网址与此格式进行匹配/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;
  }
}

相关内容