nginx条件代理基于请求正文内容传递

我试图配置Nginx代理将请求传递给另一个服务器,只有当$request_body变量匹配特定的正则表达式.但它不适合我.

 server{
        listen 80 default;
        server_name www.applozic.com;

        location / {
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $remote_addr;
                 proxy_set_header Host $http_host;

                if ($request_body ~* (.*)appId(.*)) {
                   proxy_pass http://apps.applozic.com;
                }
        }

}

请求正文是::

              {
               "applicationId": "appId","authenticationTypeId": 1,"enableEncryption": false,"notificationMode": 0,"deviceType": 4,}
最佳答案
最好的我可以告诉你的问题是,在你的if语句执行时,变量$request_body可能没有被读入内存.

建议的替代方案是使用lua支持compile nginx with the echo modules and run echo_request_body.

相关文章

一、Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...