假设我有一个 WordPress 网站:
并且我想要在同一个域中的某个子目录中有一个 rails 应用程序的入口点:
https://www.foobar.com/rails_app
我知道如果 wordpress 应用程序和 rails 应用程序都托管在同一个盒子上,这是可能的,但如果它们托管在不同的盒子上,这是否可能?
我不想使用子域名,因为我试图允许从一个子域名到另一个子域名的 ajax 发布请求,而不必处理单源策略。
答案1
不完全是,但很接近。
带有 rails 应用程序的主机需要有自己独特的主机名。但您可以创建一个崇敬代理从主域到 rails 应用程序。
将以下内容添加到您的 Apache 虚拟主机www.foobar.com
:
ProxyPass /rails_app https://railsapp_server.foobar.com:3000/rails_app
ProxyPassReverse /rails_app https://railsapp_server.foobar.com:3000/rails_app
显然,您需要确保右侧的 URL 适合您的应用程序。
答案2
据我所知,不是 - 您需要将两个页面的 A 记录指向同一服务器。子域名之所以有效,是因为它是一组不同的 A 记录,可以指向 DNS 管理器中的另一个 IP 地址。
答案3
您需要从一台主机反向代理到另一台主机——任何现代网络服务器都可以轻松处理此问题。如果您使用共享主机执行此操作,您的网络主机可能不太适合这样做。
另一方面,您也可以在同一主机上运行 WordPress 和 Rails 应用程序。
答案4
我发现实现预期结果的最简单方法是在网络主机上编写一个代理,在服务器之间传递信息。即
- Web 服务器向代理发出 AJAX 请求
- 代理将请求逐字发送到应用服务器并等待响应
- 应用服务器回复代理
- 代理将回复转发给 Web 服务器
只有 Web 服务器和代理之间的流量是 AJAX。代理和应用服务器之间的流量只是常规网络流量。