Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果某个参数不为空,则将HTTP POST请求重定向到另一个子域_Linux_Nginx_Http Post_Cloudflare - Fatal编程技术网

Linux 如果某个参数不为空,则将HTTP POST请求重定向到另一个子域

Linux 如果某个参数不为空,则将HTTP POST请求重定向到另一个子域,linux,nginx,http-post,cloudflare,Linux,Nginx,Http Post,Cloudflare,我正在将我的web应用程序与Cloudflare集成,Cloudflare在100秒后以524响应长时间运行的进程。 Cloudflare提供了为该过程创建单独子域的解决方案。好的,如果特定参数的值不是空的,我想将HTTP POST请求重定向到新创建的子域 使用nginx作为web服务器运行Linux。下面的链接仅显示如何在Cloudflare中从一个子域重定向到另一个子域,但我希望根据POST参数的值进行重定向 [连结] 例如,考虑到证据参数,以下是POST请求的数据。如下所示,此请求不应重定

我正在将我的web应用程序与Cloudflare集成,Cloudflare在100秒后以524响应长时间运行的进程。 Cloudflare提供了为该过程创建单独子域的解决方案。好的,如果特定参数的值不是空的,我想将HTTP POST请求重定向到新创建的子域

使用nginx作为web服务器运行Linux。下面的链接仅显示如何在Cloudflare中从一个子域重定向到另一个子域,但我希望根据POST参数的值进行重定向

[连结]

例如,考虑到证据参数,以下是POST请求的数据。如下所示,此请求不应重定向到新的/另一个子域

{
    "request_id"    : "",
    "callback_url" : "http://www.example.com/",
    "email"        : "",
    "document"         : {
        "evidence"           : "",
        "document_number" : ""
    }
}
{
    "request_id"    : "",
    "callback_url" : "http://www.example.com/",
    "email"        : "",
    "document"         : {
        "evidence"           : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAALCAYAAABCm8wlAAAABmJLR0QA=",
        "document_number" : ""
    }
}
但如果证据参数不为空,如下所示,则该请求应重定向到新的/另一个子域

{
    "request_id"    : "",
    "callback_url" : "http://www.example.com/",
    "email"        : "",
    "document"         : {
        "evidence"           : "",
        "document_number" : ""
    }
}
{
    "request_id"    : "",
    "callback_url" : "http://www.example.com/",
    "email"        : "",
    "document"         : {
        "evidence"           : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAALCAYAAABCm8wlAAAABmJLR0QA=",
        "document_number" : ""
    }
}

是否有任何nginx配置规则或Cloudflare页面规则可以解决此问题?我将感谢您。

这在默认的nginx安装中是不可能的。您需要安装lua nginx模块并使用ngx.req.get\u body\u数据。我认为文件清楚地说明了如何满足您的要求


要记住几点:

  • 使用临时重定向,而不是永久重定向,因为它取决于发布的内容,并且您不想破坏页面的任何书签
  • 使用307而不是301。307应该重定向帖子,而301应该重定向到现代浏览器中的GET
  • 用户可能会被询问是否要重新提交,因此您的网站可能会因出现网络钓鱼而被列入黑名单

另一个选项是使用Cloudflare worker来处理POST请求。工作人员可以将POST请求转发到正确的后端,而不会影响用户的体验。

您可以共享专用配置吗?