子域而不是子目录上的 ActionCable

Posted

技术标签:

【中文标题】子域而不是子目录上的 ActionCable【英文标题】:ActionCable on subdomain instead of subdir 【发布时间】:2018-01-29 14:47:58 【问题描述】:

我正在尝试让 ActionCable 在子域上工作。

问题是,只要我更改以下行

config.action_cable.mount_path = '/'

该应用程序不再工作。但是 ActionCable 在子域上工作。是否有任何解决方案可以在没有像 /cable 这样的子目录的子域上运行 ActionCable?

【问题讨论】:

我也想要这个问题的答案 【参考方案1】:

如果您不使用带有子 uri 的应用内服务器,您似乎需要将其作为独立服务器运行:https://github.com/rails/rails/tree/master/actioncable#consumer-configuration

您可以像这样指定电缆网址:

config.action_cable.url = 'ws://cable.example.com:28080'

有线服务器与您的普通应用服务器分开。它仍然是一个 Rack 应用程序,但它是它自己的 Rack 应用程序。推荐的基本设置如下:

# cable/config.ru
require_relative '../config/environment'
Rails.application.eager_load!

run ActionCable.server

然后你使用 bin/cable ala 中的 binstub 启动服务器:

#!/bin/bash
bundle exec puma -p 28080 cable/config.ru

https://github.com/rails/rails/tree/master/actioncable#standalone

【讨论】:

这取决于您如何配置有线服务器。我已将该信息添加到答案中 “如果您不使用带有子 uri 的应用内服务器,您似乎需要将其作为独立服务器运行”您提到的链接似乎不起作用了。你能详细说明一下吗? @LuisVasconcellos 好像搬到了这里:edgeguides.rubyonrails.org/…

以上是关于子域而不是子目录上的 ActionCable的主要内容,如果未能解决你的问题,请参考以下文章

NGINX - 将子域指向不是域目录子目录的不同目录

使用Azure Web App上的web.config将子域重写到目录

子域上的 Laravel 存储链接

在所有页面而不是子域的请求路径中维护参数信息

如何将 Route 53 子域重定向到您网站的子目录

htaccess 下载文件而不是加载