NGINX Lua ищет в файле и пересылает запрос

У меня есть тело запроса, содержащее некоторые числа в формате JSON. Мне нужно перенаправить этот номер на конкретный хост.

Например, у меня есть 4 файла .csv локально, и мне нужно просто найти, содержит ли он этот номер.

Файлы CSV должны сравнивать записи с фактическим телом запроса.

      file 1 - contains number 1 - if it's found in that file it should forward the request to host 1

file 2 - contains number 2 - if it's found in that file it should forward the request to host 2

file 3 - contains number 3 - if it's found in that file it should forward the request to host 3

file 4 - contains number 4 - if it's found in that file it should forward the request to host 4

Дайте мне знать, возможно ли это с lua nginx?

Обновите конфигурацию 1:

      location /pathcall {
   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;
   proxy_ssl_verify off;
   if ($request_method = POST ) {
   set $upstream '';
   rewrite_by_lua '
   ngx.req.read_body()
   local data = ngx.req.get_body_data()
   1_file = "/opt/DATA/1.csv"
   2_file = "/opt/DATA/2.csv"
   file_1 = io.open(1_file)
   1_data = file_1:read()
   io.close(file_1)
   1_outputdata = ngx.say(1_data)
   file_2 = io.open(2_file)
   2_data = file_2:read()
   io.close(file_2)
   local 2_outputdata = ngx.say(2_data)
   local  match0 = ngx.re.match(ngx.var.request_body, ngx.var.1_data )
   local  match1 = ngx.re.match(ngx.var.request_body, ngx.var.2_data  )

        if match0 then
        ngx.var.upstream="host1"
        elseif match1 then
        ngx.var.upstream="host2"
        else
        ngx.var.upstream="host3"
   end
   ';
   proxy_pass https://$upstream ;
   }
}

}

Кажется, он еще не работает

0 ответов

Другие вопросы по тегам