Рейтинг:1

Пожалуйста, помогите, пытаюсь установить динамический обратный прокси-сервер nginx, но это не удается.

флаг cn

Пожалуйста, помогите, я пытаюсь настроить динамический обратный прокси, чтобы мне не требовалось вносить прямые изменения в nginx. Чего я хочу добиться, так это создать расположение по умолчанию:

расположение ~ ^/постановка/v1/(.*) {
      резольвер 4.2.2.2
      proxy_pass https://$1$is_args$args;
}

поэтому, предполагая, что URL-адрес обратного прокси-сервера Nginx — это example.com, и я посещаю example.com/staging/v1/test.com, обратный прокси-сервер передаст мой запрос на test.com со всеми путями и аргументами.

Однако, похоже, это работает с большим количеством ошибок. Во-первых, он загружает пустую страницу. но если я добавлю домен в корень местоположения nginx, например:

  место расположения / {

               proxy_pass test.com;
       }

это заставит запросы вроде example.com/staging/v1/test.com/app/login.png начать работать.

Пожалуйста, мне нужна помощь

Ivan Shatsky avatar
флаг gr
Вам необходимо отправить действительный HTTP-заголовок [`Host`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Host) вместе с вашим запросом. Вам нужно будет разделить остальную часть вашего URI на две части и использовать первую, чтобы установить ее с помощью директивы `proxy_set_header`. Проверьте [этот] (https://serverfault.com/a/1100774/498657) ответ, чтобы узнать больше.
henry chidiebere avatar
флаг cn
Спасибо @IvanShatsky Однако я не смог понять, как разделить URI на две части и как установить с ним заголовок прокси. Не могли бы вы помочь с явным способом заставить эту работу работать?
Рейтинг:1
флаг gr

Вам необходимо отправить действительный Хозяин Заголовок HTTP с вашим запросом. Вам нужно будет разделить остальную часть вашего URI на две части и использовать первую, чтобы установить ее с помощью proxy_set_header директива. Проверять это ответьте, чтобы узнать больше.

Поскольку часть имени хоста, очевидно, не может включать косую черту, вместо этого вы можете использовать следующий шаблон регулярного выражения:

расположение ~ ^/staging/v1/([^/]+)(?:/(.*))? {
    резольвер 4.2.2.2;
    proxy_set_header Хост $1;
    proxy_pass https://$1/$2$is_args$args;
}
henry chidiebere avatar
флаг cn
Большое спасибо, Иван, однако, это дало аналогичный результат. Неработающие ссылки на странице являются результатом неправильного URL-адреса. например, когда я просматриваю страницу, одно из неработающих изображений имеет URL-адрес вроде example.com/images/pic.png. Однако, если я изменю URL-адрес изображения с помощью example.com/staging/1/test.com/images/pic.png, изображение будет успешно загружено. Я попытался использовать sub_filter для изменения URL-адреса объекта, но мне это не удалось. Еще раз спасибо за помощь, я очень признателен.
Ivan Shatsky avatar
флаг gr
Я не уверен, что можно создать какой-то универсальный набор правил `sub_filter`, который будет применим для каждого сайта. Когда дело доходит до какого-то сложного JS, это вообще становится невозможным. Вы можете проверить некоторые другие ответы SF/SO: [1] (https://serverfault.com/a/932636/498657), [2] (https://stackoverflow.com/a/70012067/7121513). Вам нужно будет использовать `/staging/v1/$1` в качестве префикса в правилах замены.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.