Symfony за обратным прокси
У нас есть частная сеть, в которой наши приложения установлены на виртуальном хосте Apache, например:
http://extranet.domain.com
или же http://calendar.domain.com
Все отлично работает Теперь нам нужно сделать одно из этих приложений доступным за пределами нашей сети.
Наша единственная машина с открытым доступом - это сервер zimbra (mail)... на котором я пытался настроить обратный прокси, но он не работает... Я добавил это в /etc/nginx/sites-enabled/default
location /extranet/ {
proxy_pass http://extranet.domain.com/;
proxy_http_version 1.1;
proxy_set_header Accept-Encoding "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Если я попробую внешний URL из внешней сети, как это:
http://zimbra.externaldomain.com/extranet/login
Я могу добраться до страницы входа в систему и войти, но после перенаправления он теряет часть URL-адреса экстрасети, поэтому он никуда не денется...
http://zimbra.externaldomain.com/home
Вместо
http://zimbra.externaldomain.com/extranet/home
Любая помощь или подсказка?
1 ответ
Остерегайтесь косой черты: proxy_pass http://extranet.domain.com/;
, это действительный URI. Таким образом, nginx заменит ваш соответствующий запрос этим.
Если ваше подходящее местоположение /extranet/
и вы передаете его с URI, как /extranet/someurl
, проход прокси nginx заменит соответствующее местоположение своим собственным URI, в вашем случае /
,
Итак, маршрут /extranet/someurl
станет /someurl
,