是否可以在同一个域上运行 Rails 应用程序和 React 应用程序?

Posted

技术标签:

【中文标题】是否可以在同一个域上运行 Rails 应用程序和 React 应用程序?【英文标题】:Is it possible to run a Rails app and React app on the same domain? 【发布时间】:2017-05-30 17:53:01 【问题描述】:

我有一个场景,我想建立一个用作 CMS 和社交网络的网站。一直以来,我只会将 Rails 用作我的 API 提供者。我原本打算用 Redux 完全在 React 中做客户端,但随着构建的增长,我发现自己为最简单的任务编写了大量的样板文件(CMS 方面)。

与其进行构建,我认为最好使用 Rails 构建 CMS,因为您可以直接使用基于 CRUD 的工具。此时,我将在同一个 Rails 应用程序中拥有 API 和 CMS。

撰写帖子、创建集合等的社交网络方面仍将使用 React 完成。我想知道是否有可能实现我可以在同一域下分别制作 Rails 应用程序和 SPA 的场景。任何资源将不胜感激。

注意:我知道有一个用于 Rails 的 React gem,但我宁愿将它作为一个独立的模块使用,以利用 Redux 和其他 Node 包。

【问题讨论】:

【参考方案1】:

考虑使用像 nginx 这样的反向代理。 Nginx 允许您将不同的路径映射到不同的主机或同一主机(具有不同的端口)

location /cms/ 
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header Host $host;
   proxy_pass http://192.168.1.2:3000;
   

location /social/ 
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header Host $host;
   proxy_pass http://192.168.1.2:3100;

您可以在以下网址找到更多信息

https://www.nginx.com/resources/admin-guide/reverse-proxy/

【讨论】:

这是最好的解决方案。使用 NGINX 时,您可以在不同的环境和端口上运行许多应用程序,并且通过反向代理,您可以将传入流量重定向到正确的应用程序。

以上是关于是否可以在同一个域上运行 Rails 应用程序和 React 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

当 Rails 中的同一域上存在会话时,如何在 PHP 中创建会话?

Googlebot何时执行javascript?

我可以在两个域上拥有两个相同的网站,最好从同一个 Wordpress 运行吗?

在 Rails 3 中跨多个子域删除会话 Cookie

Rails 对 service-worker.js 的未知调用

使用 C# 在域上保留具有快照的虚拟机