Задать вопрос
Tash1moto
@Tash1moto

Как сделать proxy_pass на query параметр через nginx?

Всем привет, нужна помощь в решении задачи:

Необходимо в nginx сделать proxy_pass на сформированую урл:

1 - Нужно выдернуть значение query параметра redirect
2 - Заменить hostname текущего урл на то что мы выдернули
3 - Удалить query параметр redirect
4 - И сделать proxy_pass на то что получилось

Тоесть с Урлы https://sitea.com?token=123&redirect=https://siteb.com
должен сработать proxy_pass на https://siteb.com?token=123
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dodo512
map $args $_args {
~^redirect=[^&]*&?(.*)  $1;
~^(.*?)&redirect=[^&]*(&?.*) $1$2;
}

server {

    location = / {

        error_page 418 = @rewrite;

        if ($arg_redirect ~ '^(?<_url>https?://[\w.-]+)') {
            return 418;
        }
    }

    location @rewrite {

        rewrite ^ /?$_args? break;

        proxy_pass $_url;

        proxy_http_version 1.1;
        proxy_ssl_server_name on;

        resolver 8.8.8.8;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы