如何使用Nginx动态参数重定向?

vom3gejh  于 4个月前  发布在  Nginx
关注(0)|答案(1)|浏览(65)

我目前正在接收一个请求到我的Nginx服务器domain1.com/test?param1=123&param2=abc&param3=xyz。我需要获取三个参数,使用这些参数执行一个单独的HTTP调用(domain2.com/test?param1=123&param2=abc),它返回一个对象'abc123'。
然后基于来自呼叫的响应,302重定向到domain2.com/endpoint?paramFromCall=abc123&param3=xyz。
这在Nginx中可能吗?如果不可能,我应该怎么做?我是新的web开发者,只是想为测试目的设置一些后端东西。
我目前在domain1.com/test有一个索引,通过JS执行这个工作,但它只是设置了href。我想改为302,如果可能的话,不加载索引。

ej83mcc0

ej83mcc01#

我不相信这可以在nginx内部完成,你需要一个类似PHP脚本的东西来处理逻辑,像这样:
nginx:

server {
  # ...

  location /test {
    try_files $uri /redirect.php?$query_string;

    location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }
  }
}

字符串
/your/web/root/redirect.php

<?php
$param = file_get_contents('https://domain2.com/test/?param1=' . $_GET['param1'] . '&param2=' . $_GET['param2']);
$redirect = 'https://domain2.com/endpoint/?paramFromCall=' . $param . '&param3=xyz';
header('Location: ' . $redirect, true, 302);
exit;
?>

相关问题