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

Ссылка скопирована
1 ответ

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

Необходимо в 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

Дополнительно:

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

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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Андрей PHP Ответ

Для создания прокси-переадресации на основе query параметра через Nginx, вам необходимо использовать директиву proxy_pass внутри блока location. Прокси-переадресация позволяет перенаправлять запросы на другой сервер или приложение.

Вот пример конфигурации Nginx, который позволяет сделать прокси-переадресацию на основе query параметра:

```php
server {
listen 80;
server_name example.com;

location / {
proxy_pass http://backend_server$request_uri;
}
}
```

В этом примере, все запросы, поступающие на ваш сервер example.com, будут переадресовываться на backend_server с сохранением query параметров. Например, если запрос приходит на example.com/api/user?id=123, он будет перенаправлен на backend_server/api/user?id=123.

Если вам нужно указать определенный query параметр для прокси-переадресации, вы можете использовать условия в блоке location. Например, если вы хотите перенаправить только запросы с параметром type=1, то конфигурация будет выглядеть следующим образом:

```php
server {
listen 80;
server_name example.com;

location / {
if ($arg_type = 1) {
proxy_pass http://backend_server$request_uri;
}
}
}
```

Таким образом, при запросе example.com/api/data?type=1 произойдет прокси-переадресация на backend_server/api/data?type=1, в то время как запросы с другим значением параметра type будут игнорироваться.

Убедитесь, что в вашем конфигурационном файле Nginx правильно установлены блоки server и location, и что все директивы заданы корректно. После внесения изменений не забудьте перезагрузить сервер Nginx для применения новой конфигурации.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно