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