Изменить имя хоста для перенаправления в Rails с помощью Devise - PullRequest
3 голосов
/ 15 января 2012

У меня есть специальные настройки для моего приложения Rails. Мое приложение размещено за обратным прокси-сервером и по какой-то причине переписывает запросы. Сервер, на котором работает приложение, имеет только внутренний IP-адрес. Обратный прокси-сервер имеет публичный адрес и перенаправляет все входящие запросы на сервер приложений.

Проблема в том, что, хотя все запросы поступают как example.com/my/url, они переписываются и отправляются на сервер приложений как 10.0.0.2/my/url. Это становится проблемой, когда, например, Устройство devise вступает в игру, требуя аутентификации и перенаправления на страницу входа. Отправленное перенаправление будет включать локальный IP-адрес вместо полного доменного имени, которое было запрошено изначально.

Есть идеи, как заставить мое приложение Rails использовать определенное имя хоста в перенаправлениях? Я попытался установить HTTP_HOST, используя passenger_set_cgi_param, который не работал, а также попытался вручную установить request.host в before_filter.

1 Ответ

3 голосов
/ 16 августа 2012

Я думаю, вам нужен обратный прокси-сервер для пересылки важных заголовков HTTP в ваше приложение Rails. Звучит так, как будто их лишают.

Для nginx у меня есть эти директивы в моем server блоке:

server {
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
}
...