gpt4 book ai didi

ruby-on-rails - 欺骗 Rails 应用程序使其认为它在不同的端口上

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

我有一个运行在端口 8080 上的 Rails 应用程序我需要欺骗以为它在端口 80 上运行。

我在端口 80 上运行 Varnish并将请求转发到端口 8080 上的 nginx ,但是当用户尝试使用 OmniAuth 登录并且 Devise gem 生成一个 URL 以重定向回服务器时,它认为它在端口 8080 上,然后用户将看到。

有什么方法可以欺骗 Rails 应用程序将端口硬编码为 80(我认为这是一种不好的做法),或者让 nginx 转发请求,就好像它在端口 80 上运行一样?

由于我没有运行 Rails 应用程序的 nginx 代理,因此我想不出欺骗端口的方法。

以前有没有人遇到过这个问题,如果有的话,需要什么样的配置来修复它?

提前致谢!

编辑:
nginx 和 Varnish 都在同一台服务器上运行。

最佳答案

我在端口 80 上使用 Varnish 和在端口 8080 上使用 nginx 进行了相同的设置,OmniAuth(无设计)正在做完全相同的事情。我试过设置 X-Forwarded-Port等在 Varnish 和 fastcgi_param SERVER_PORT 80;在nginx中,都没有成功。我设置中的另一部分是Passenger(你没有提到)但如果你确实在使用Passenger,那么你可以使用:

passenger_set_cgi_param SERVER_PORT 80; 

(文档说你可以在 http 块中设置它,但这对我不起作用,我不得不将它添加到 server 块中。)

http://modrails.com/documentation/Users%20guide%20Nginx.html#passenger_set_cgi_param

关于ruby-on-rails - 欺骗 Rails 应用程序使其认为它在不同的端口上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590855/

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