我们有一个用PHP编写的遗留应用程序,我们现在正在迁移到java。 该应用程序非常重要,我们正在尝试部分迁移功能。 记住这个场景,我需要根据查询字符串参数的值在php-fpm后端和java应用程序之间分配流量
例如 if $ format =" csv&#34 ;,使用php使用fast-cgi和process请求 如果$ format =" xml&#34 ;,使用proxy_pass指令连接到java后端。
不幸的是,我发现很难在nginx上做到这一点。
我尝试了以下
if ($args_format ="csv")
include php;
if ($args_format ="xml")
include proxy;
这里php和proxy是包含proxy_pass和fast-cgi相关语句的文件
不幸的是,这会引发语法错误
然后我使用类似
的东西创建地图map $args_output $provider {
default "proxy";
csv "php";
}
然后做了一个
包括$ provider;
这也失败了,因为nginx似乎在开始时而不是在每次调用执行期间加载包含。
关于如何以优雅的方式实现这一目标的任何建议。
答案 0 :(得分:0)
变量名称为 $ arg_format http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_
您必须在if语句后使用{}。 http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if
尝试类似......
if ($arg_format ="csv") {
include php;
}
if ($arg_format ="xml") {
include proxy;
}