Назад | Перейти на главную страницу

Обратный прокси-сервер Nginx для внешнего URL-адреса, в котором есть перенаправления

Добрый день, господа!

Моя текущая установка - это один сайт, позвольте назвать это http://production.com, который обслуживается Nginx на порту 80 в качестве статического кеша, а Apache в фоновом режиме на порту 8080 localhost, ничего особенного, и это работает очень хорошо.

Сейчас я пытаюсь сделать URL-адрес http://production.com/foobar для включения данных из внешнего URL-адреса, который мы назовем http://internal.com/.

Проблема в том, что если я перейду на http://internal.com/ Я автоматически перенаправляюсь на http://www.internal.com/forum/forum.php из-за того, что это форум vBulletin, у которого есть собственные внутренние перенаправления, а не на основе переменной URL сайта. Конечно, то же самое происходит, если я пытаюсь проксировать его через Nginx, меня просто «перенаправляют» на URL ../forum/forum.php.

Итак, как мне это решить? Есть ли способ каким-то образом сделать это перенаправление невидимым и не позволить Nginx каким-то образом следовать за ним в адресной строке? В основном iframe без использования фактического iframe. :-)

Это мой фрагмент кода Nginx, который я сейчас пытаюсь использовать:

    location /foobar {
            proxy_pass      http://internal.com/;
            proxy_redirect  off;
            proxy_set_header        Host $host;
    }

Идеи? Заранее спасибо.

Я понял, что в этом случае у вас есть два разных варианта.

  1. Вы либо используете ngx.lua модуль, как указал Андрей Михальцов, и изменить прокси для любого ответа HTTP, который вы получите, это, конечно, может быть настоящим кошмаром.

  2. Вы вносите некоторые изменения в любое приложение, в которое «перенаправляете», в нашем случае это был форум.

В нашем случае мы выбрали номер 2, поместили их в один домен и внесли некоторые изменения в форум.