1

我有以下问题。我想明确告诉 rails 它正在运行的端口,以便 _url 帮助程序将使用该端口而不是自动发现的端口。

根本的问题是,我的 Rails 应用程序和 apache 服务静态内容都很薄。只要在端口 80 (apache) 上访问该网站就可以正常工作,但在运行 Thin 的端口上访问时就不行。(这是自动发现的端口。)

4

2 回答 2

0

因为 Ruby on Rails 使用自己的服务器,所以访问您的网站(以及随后访问您的 Ruby on Rails 应用程序)的用户需要被重定向到适当的端口。

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

ruby s -p <port-number>
于 2010-11-17T10:26:34.970 回答
0

Rails 应该创建不包含完全限定域名的相对链接,请参见此处的示例,我引用:

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,您能否复制/粘贴有趣的部分,以便我修复这个答案?

提前致谢。

于 2010-11-17T14:33:10.863 回答