Я заглянул в источник OmniAuth и обнаружил, что механизм обратного вызова внутренне использует метод с именем full_host
, который ищет переменную конфигурации и затем строит первую часть URI - взгляните на oa-core-0.2.6/lib/omniauth/strategy.rb
Переменная конфигурации может быть String (как в вашем случае), или Proc, или nil (или что-то еще). В последнем случае URI запроса анализируется, прерывается и возвращается.
Я думаю, что мы не можем решить нашу общую проблему, просто установив переменную окружения в Apache (это, вероятно, следует сделать на более низком уровне, внутри стека приложений ruby), но после некоторых экспериментов я нашел, что это работает достаточно хорошо для меня:
OmniAuth.config.full_host = lambda do |env|
scheme = env['rack.url_scheme']
local_host = env['HTTP_HOST']
forwarded_host = env['HTTP_X_FORWARDED_HOST']
forwarded_host.blank? ? "#{scheme}://#{local_host}" : "#{scheme}://#{forwarded_host}"
end