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,

Для справки

Другие вопросы по тегам