Rails:明确告诉rails它正在运行的端口

时间:2010-11-17 10:20:44

标签: ruby-on-rails ruby-on-rails-3 thin

我遇到了以下问题。我想明确地告诉rails它运行的端口,以便_url帮助器将使用该端口而不是自动发现的端口。

潜在的问题是,我已经瘦服务我的rails app和apache服务静态内容。只要在端口80(apache)上访问网站,这种方法就可以正常工作,但在瘦端口上运行时却无法访问。 (这是自动发现的端口。)

2 个答案:

答案 0 :(得分:0)

由于Ruby on Rails使用自己的服务器,因此需要将访问您网站的用户(以及随后的Ruby on Rails应用程序)重定向到相应的端口。

要更改Ruby on Rails服务器的端口,您应该使用-p选项启动服务器:

ruby s -p <port-number>

答案 1 :(得分:0)

Rails应该创建相对链接,不包括完全限定的域名,请参阅示例here,我引用:

link_to "Profile", profile_path(@profile)

# => <a href="/profiles/1">Profile</a>;
另一方面,* _url快捷方式正在使用完整路径,当你在反向代理(在你的情况下是apache)时,这很糟糕。

您是否尝试仅使用* _path进行链接,而* _url进行重定向,因为在重定向的情况下,apache应该重写url以匹配其端口(假设您在Apache使用ProxyPass和ProxyPassReverse指令)水平)?

如果使用url_for,可以通过将:only_path设置为true来强制它为相对。

如果您的apache配置不是基于ProxyPass,请复制/粘贴有趣的部分,以便我可以解决这个问题吗?

提前致谢。