如何让本地机架服务器(pow.cx)代理tomcat?

如何让本地机架服务器(pow.cx)代理tomcat?,tomcat,pow.cx,Tomcat,Pow.cx,因此,我使用pow.cx来满足大多数静态本地主机的需求——我也设法让它通过rack legacy为php服务 然而,我现在发现自己需要在一个项目中使用Tomcat,但我仍然希望尽可能地使用Pow。这样做的原因是多方面的,但基本上我更愿意通过机架提供除需要java的部件之外的所有服务 我想知道是否有一种方法可以告诉pow代理掉对8081端口上本地运行的tomcat服务器的请求?我想config.ru可能会被要求做一些这方面的工作,但我真的不知道怎么做(因为我不是一个真正的Ruby专家) 如果有人能

因此,我使用pow.cx来满足大多数静态本地主机的需求——我也设法让它通过rack legacy为php服务

然而,我现在发现自己需要在一个项目中使用Tomcat,但我仍然希望尽可能地使用Pow。这样做的原因是多方面的,但基本上我更愿意通过机架提供除需要java的部件之外的所有服务

我想知道是否有一种方法可以告诉pow代理掉对8081端口上本地运行的tomcat服务器的请求?我想config.ru可能会被要求做一些这方面的工作,但我真的不知道怎么做(因为我不是一个真正的Ruby专家)

如果有人能帮忙,那就太好了。我已经找到了一些类似的话题,但似乎没有什么是非常适合我在这里试图做的


干杯

在这里没有答案之后,我做了一些进一步的挖掘,并将其他地方找到的解决方案组合在一起-以下是我从配置pow以使用rack legacy处理php文件中了解到的知识,以及互联网上其他地方的知识:

解决方案在于另一个gem:机架反向代理

如果尚未安装gem,只需运行

gem install rack-reverse-proxy
从命令行

一旦安装了它,就可以相对简单地修改php项目中现有的config.ru文件,使其适合这里,并将pow转发给Tomcat的所有请求

假设您的本地tomcat服务器正在端口8001上运行:

require 'rack'
require 'rack/reverse_proxy'
require 'rack-rewrite'

INDEXES = ['index.html','index.php', 'index.cgi']

ENV['SERVER_PROTOCOL'] = "HTTP/1.1"

use Rack::ReverseProxy do
   # Set :preserve_host to true globally (default is true already)
   reverse_proxy_options :preserve_host => true

   # Forward the path /* to tomcat. 
   # You can limit this to requests to certain paths by providing a more specific 
   # path as the first argument
   reverse_proxy '/', 'http://localhost:8081'
end

use Rack::ReverseProxy
run Rack::File.new Dir.getwd
在那之后,事情就这么简单了

我希望这些知识能帮助其他人在我未来的陌生处境中