Apache反向代理背后的JBoss服务器和CouchDB服务器

时间:2011-08-24 04:49:23

标签: apache jboss proxy couchdb

我的本​​地计算机上有两台服务器。一个是在端口8080上运行的JBoss服务器 另一个是在端口5894上运行的CouchDB服务器。我可以访问它们中的每一个 localhost:8080和localhost:5984。由于ajax同域限制, 我需要从example.com访问jboss和couchdb,或者至少从example.com/couch访问couchdb。我听到并读到了 apache的反向代理配置可以帮助解决这个问题。但到目前为止,我无法让它发挥作用。 我在Win32上运行apache 2.2.19。有人可以帮助配置来实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

如果您使用的是CouchDB v1.1.0,它有一个内置代理。也许它可以是您的主要Web服务器,处理一些查询并将其余的转发给JBoss?有一些限制,主要是因为你没有像httpd mod_rewrite那样的复杂控件。

登录Futon管理界面(/_utils)。在配置部分中,单击最底部的“添加新部分”。该部分是httpd_global_handlers;该选项取决于您,例如:/_jboss;并且值是Erlang表达式{couch_httpd_proxy, handle_proxy_req, <<"http://127.0.0.1:8080">>}。 (显然你可以选择你想要的任何URL,但这个例子应该有用。)

您也可以直接通过HTTP API进行设置:

PUT /_config/httpd_global_handlers/_jboss HTTP/1.0
Content-Type: application/json

"{couch_httpd_proxy, handle_proxy_req, <<\"http://127.0.0.1:8080\">>}"

现在,当您查询CouchDB时,一切都像以前一样。但是,有一个新的URL空间/_jboss/*,它将直接通过CouchDB和JBoss进行代理。

如果您需要JBoss位于/而CouchDB位于/couch,这也可能使用CouchDB vhost 以及一些重写规则。 (它们比Apache httpd mod_rewrite简单得多。)

答案 1 :(得分:1)

mod_proxy模块和类似的东西?

ProxyPass /couch/ http://localhost:5894/
ProxyPassReverse /couch/ http://localhost:5894/

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/