加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:44:35 所属栏目:百科 来源:网络整理
导读:我有一个在端口8080上运行的Rails应用程序,我需要欺骗它认为它在端口80上运行. 我在端口80上运行Varnish并在端口8080上将请求转发到nginx,但是当用户尝试使用OmniAuth登录并且Devise gem生成一个URL以重定向回服务器时,它认为它在端口8080上然后用户将看到.
我有一个在端口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(没有设计)的设置完全相同.我尝试在Varnish和fastcgi_param SERVER_PORT 80中设置X-Forwarded-Port等;在nginx中,都没有成功.我的设置中的另一件是乘客(你没有提到),但如果你确实使用了乘客,那么你可以使用:

passenger_set_cgi_param SERVER_PORT 80;

(文档说你可以在一个http块中设置它,但这对我不起作用,我不得不将它添加到服务器块.)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读