1

所以,我使用 pow.cx 来满足我的大部分静态 localhost 需求——我也设法让它通过 rack-legacy 来服务 php。

但是,我现在发现自己需要在项目中使用 Tomcat,但我仍想尽可能地使用 Pow。造成这种情况的原因是多方面的,但基本上我宁愿通过机架提供除需要 java 的部分以外的所有内容。

我想知道是否有办法告诉 pow 将请求代理到端口 8081 上本地运行的 tomcat 服务器?我想可能会告诉 config.ru 做一些这样的事情,但我真的不知道怎么做(因为我不是真正的 Ruby 专家)。

如果有人可以在这里提供帮助,那就太好了。我在 SO 上找到了一些类似的主题,但似乎没有什么与我在这里尝试做的完全相符。

干杯

4

1 回答 1

2

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

解决方案在于另一个 gem:rack-reverse-proxy。

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

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

毕竟真的就这么简单。

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

于 2013-12-09T23:27:11.120 回答