如何告诉本地Rack服务器(pow.cx)代理tomcat?

时间:2013-12-04 12:19:03

标签: tomcat pow.cx

所以,我使用pow.cx来支持我的大多数静态localhost需求 - 我已经设法通过rack-legacy来为它提供服务。

但是,我现在发现自己处于需要使用Tomcat进行项目的位置,但我仍然希望尽可能使用Pow。原因很多,但基本上我宁愿提供除了需要java via rack的部分之外的所有东西。

我想知道是否有办法告诉pow代理对端口8081上本地运行的tomcat服务器的请求?我认为config.ru可能会被告知要做一些,但我真的不知道如何(因为我不是真正的Ruby专家)。

如果有人能在这里提供帮助,那就太棒了。我在SO上发现了一些类似的主题,但似乎没有什么比我在这里尝试做的更合适。

干杯

1 个答案:

答案 0 :(得分:2)

在这里没有答案后,我在其他地方找到了更多的挖掘和组合解决方案 - 以下是我已经知道的从配置pow到使用rack-legacy来处理php文件以及来自其他地方的一些知识的组合在互联网上:

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

如果您还没有安装宝石,只需运行

gem install rack-reverse-proxy

从命令行

一旦你安装了它,从一个php项目修改现有的config.ru文件以适应这里是一个相对简单的问题,并且对所有对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

毕竟这真的很简单。

我希望这些知识可以在将来的奇怪情况下帮助别人!