gpt4 book ai didi

ruby-on-rails - OmniAuth 在反向代理设置中使用错误的回调端口

转载 作者:行者123 更新时间:2023-12-04 06:07:14 25 4
gpt4 key购买 nike

我在端口 3101 上运行了一个 Rails 应用程序我通过 Apache 反向代理设置(就像 Phusion 在 this blog post 上建议的那样)将它提供给互联网。

我正在使用 Devise + OmniAuth 来处理 Facebook 身份验证。

但是当我尝试通过 Facebook 进行身份验证时,我被重定向到以下网址:http://mydomain.com:3101/my_callback_path
我用 passenger start -a 127.0.0.1 -p 3101 -d 启动 rails 应用程序我的 Apache 设置是:

<VirtualHost *:80>
ServerName mydomain.com

PassengerEnabled off
ProxyPass / http://127.0.0.1:3101/
ProxyPassReverse / http://127.0.0.1:3101

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>

我找到了一些答案,例如 thisthis但它们都是针对 Nginx 设置的。

我尝试将初始化程序与 OmniAuth.config.full_host = 'http://my domain.com' 一起使用但我想知道我的 apache 设置中是否没有缺少配置(如之前的答案)。

提前致谢。

最佳答案

我查看了OmniAuth源,发现回调机制内部使用了一个名为full_host的方法。查找配置变量,然后构建 URI 的第一部分 - 查看 oa-core-0.2.6/lib/omniauth/strategy.rb
配置变量可以是一个字符串(如您的情况)、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

关于ruby-on-rails - OmniAuth 在反向代理设置中使用错误的回调端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com