2017-05-29 7 views
7

Ich versuche Nginx Proxy zu konfigurieren übergeben die Anfrage an einen anderen Server, nur wenn die Variable $ request_body auf einen bestimmten regulären Ausdruck übereinstimmt.Aber es funktioniert nicht für mich.Nginx bedingten Proxy-Pass basierend auf Anfrage Body Inhalt

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; 
       } 
     } 

}

Anfrage Körper ist ::

   { 
       "applicationId": "appId", 
       "authenticationTypeId": 1, 
       "enableEncryption": false, 
       "notificationMode": 0, 
       "deviceType": 4, 
       } 
+1

Mögliches Duplikat [nginx Spiel bestimmten Wort in Position] (https://stackoverflow.com/questions/7888165/nginx-match-specific-word-in-location) – AlexD

Antwort

1
I found the solution. 

I did following changes in nginx(open resty) config file 

upstream algoapp { 
    server 127.0.0.0.1:543; 
} 
upstream main { 
    server 127.0.0.1:443; 
} 

location /rest/ws/login { 
    proxy_set_header X-Forwarded-Host $host; 
    proxy_set_header X-Forwarded-Server $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Url-Scheme $scheme; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    if ($request_method = OPTIONS) { 
    proxy_pass https://127.0.0.1:543; 
    } 
    if ($request_method = POST) { 
    set $upstream ''; 
    access_by_lua ' 
    ngx.req.read_body() 
    local data = ngx.req.get_body_data() 
    local match = ngx.re.match(ngx.var.request_body, "appId") 
    if match then 
     ngx.var.upstream = "algoapp" 
    else 
    ngx.var.upstream = "main" 
    end 
    '; 
    proxy_pass https://$upstream; 
    } 
    } 
Verwandte Themen