如何让本地机架服务器(pow.cx)代理tomcat?
因此,我使用pow.cx来满足大多数静态本地主机的需求——我也设法让它通过rack legacy为php服务 然而,我现在发现自己需要在一个项目中使用Tomcat,但我仍然希望尽可能地使用Pow。这样做的原因是多方面的,但基本上我更愿意通过机架提供除需要java的部件之外的所有服务 我想知道是否有一种方法可以告诉pow代理掉对8081端口上本地运行的tomcat服务器的请求?我想config.ru可能会被要求做一些这方面的工作,但我真的不知道怎么做(因为我不是一个真正的Ruby专家) 如果有人能帮忙,那就太好了。我已经找到了一些类似的话题,但似乎没有什么是非常适合我在这里试图做的如何让本地机架服务器(pow.cx)代理tomcat?,tomcat,pow.cx,Tomcat,Pow.cx,因此,我使用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
在那之后,事情就这么简单了
我希望这些知识能帮助其他人在我未来的陌生处境中