我目前正在接收对我在domain1.com/test?param1=123&param2=abc&param3=xyz.的NGINX服务器的请求我需要获取这三个参数,使用这三个参数(domain2.com/test?param1=123&param2=abc)执行一个单独的HTTP调用,它返回一个对象‘abc123’.

然后,基于来自该调用的响应,302重定向到domain2.com/endpoint?paramFromCall=abc123&param3=xyz.

这在Ngix有可能吗?如果不是,我应该怎么做?我是网络开发人员的新手,只是为了测试目的而try 设置一些后端的东西.

我目前在domain1.com/test上有一个通过JS执行的索引,但它只是设置了href.我想302,而不是加载索引,如果可能的话.

推荐答案

我认为这不能在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;
?>

Javascript相关问答推荐

主要内部的ExtJS多个子应用程序

一次仅播放一个音频

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

深嵌套的ng-container元素仍然可以在Angular 布局组件中正确渲染内容吗?

v—自动完成不显示 Select 列表中的所有项目

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

如何从HTML对话框中检索单选项组的值?

如何在每次单击按钮时重新加载HighChart/设置HighChart动画?

我可以使用空手道用户界面来获取网页的当前滚动位置吗?

更新动态数据中对象或数组中的所有值字符串

以编程方式聚焦的链接将被聚焦,但样式不适用

Docent.cloneNode(TRUE)不克隆用户输入

为什么延迟在我的laravel项目中不起作用?

将范围 Select 器添加到HighChart面积图

我不知道如何纠正这一点.

固定动态、self 调整的优先级队列

从异步操作返回对象

将延迟加载的模块转换为Eager 加载的模块

$GTE的mongoose 问题

正则表达式以确定给定文本是否不只包含邮箱字符串