【发布时间】:2013-09-27 06:39:17
【问题描述】:
我正在尝试根据我的请求中的 POST/GET/PUT/DELETE 参数配置 nginx 以执行 proxy_pass。
如果live=1,我想proxy_pass 到http://10.0.0.2:8000,如果live=0,我想http://10.0.0.2:8081。
我尝试使用if ($arg_live = "1"),但它只适用于 GET 请求。
谢谢,
佩德罗
【问题讨论】:
-
我遇到了同样的问题,我相信你需要为 POST 解析 $request_body 但不知何故,设置它时非常棘手
-
对于未来的访问者来说,这不仅仅是普通 Nginx 自己可以处理的。研究使用 Nginx 的 Lua 模块。 OpenResty 使安装模块变得容易。还有一个提供 $post_* 变量的模块,尽管 Lua 仍然更适合像这样的复杂逻辑。
-
至少从像
PUT /some/route?live=1 HTTP/1.1这样的请求的nginx 1.14 请求参数被正确检测到,$arg_livenginx 变量被填充了正确的值。分析请求正文是另一个主题,最好使用一些第三方模块来完成,但是也可以通过map块检测一些字符串的存在。
标签: nginx reverse-proxy