Nginx - Правило перезаписи под прокси не выполнено - PullRequest
0 голосов
/ 19 июня 2019

У меня есть некоторые проблемы с «базовым» правилом перезаписи в типе местоположения proxy_pass:

location ~* /test1/network/v1/operator/ke3/dataUp {
              rewrite ^(?<begin>/test1/network/v1/operator/ke3/dataUp)(?<parametersPart>.*)(?<mustDie>/dataUp)$ $parametersPart break;
              proxy_pass http://server_preproduction;
              proxy_set_header X-Real-IP  $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto https;
              proxy_set_header X-Forwarded-Port 443;
              proxy_set_header Host $host;
       }

Я ожидаю, что любые вызовы, отправленные на: .../test1/network/v1/operator/ke3/dataUp?param1=GHJ&param2=865/dataUp

будут равны: .../test1/network/v1/operator/ke3/dataUp?param1=GHJ&param2=865

Так что я просто хочупроанализируйте раздел параметров, чтобы удалить любой дополнительный / dataUp из исходного запроса.Но когда я пытаюсь использовать для этого любые регулярные выражения, nginx, кажется, возвращается в местоположение / и использует запрос по умолчанию ...

Я уверен, что используется правильное местоположение, потому что когда яиспользуйте переписать как: rewrite ^(?<begin>/test1/network/v1/operator/ke3/dataUp)(?<parametersPart>.*)$ TEST$parametersPart break; Журнал на прокси-сервере получил: TEST? param1 = GHJ¶m2 = 865 / dataUp

Я не добавляю / в конце proxy_pass, потому что я хочу заменить всеURL (но это не обязательно! Я перепробовал много комбинаций ...)

Если кто-то может спасти мой день: p

Спасибо !!

1 Ответ

0 голосов
/ 20 июня 2019

Я нахожу способ манипулировать аргументом с помощью простого оператора if ...

    if ($query_string ~ "^(?<argsok>/dataUp.*)(?<argsko>/dataUp)$") {
        proxy_pass http://server_preproduction/$argsok;
    }
...