Apache 将请求转发到另一台服务器
Posted
技术标签:
【中文标题】Apache 将请求转发到另一台服务器【英文标题】:Apache forwarding request to another server 【发布时间】:2012-04-23 10:57:21 【问题描述】:我希望 apache 将来自一台服务器的请求转发到另一台服务器。这是完整的场景:
有 3 台服务器:
-
机器 A - IP:A.A.A.A - 想要在机器 C 上调用 API 的客户端机器。
机器 B - IP:B.B.B.B - 中间机器
机器 C - IP:C.C.C.C - 托管 API 的机器。
API URL:http:// 机器 c:8000/v1/customer/....
连接状态:
-
机器 A -> 机器 B:端口 80 上的 Telnet - 好
机器 B -> 机器 C:端口 8000 上的 Telnet - 好
机器 A -> 机器 C:端口 8000 上的 Telnet - 错误
理想情况下,我想从机器 A 调用机器 C 上的 API,但由于我在 A 和 C 之间没有直接的 n/w 连接,所以我必须走这条路线。
所以我想在机器 B 上设置 apache 服务器,这样: 从机器 A 进行 API 调用 - http:// Machine B:80/v1/customer/.... 然后将其转发到端口 8000 上的 Machine C。 C 处理请求并将响应发送回 A。
任务可能很简单,但我是这个 apache 的新手,如果有人可以告诉我解决方案,这对我明天的截止日期会很好:)
谢谢!
【问题讨论】:
【参考方案1】:经过一些研究和谷歌搜索进一步能够做到这一点。这是我所做的 - 可能对面临同样问题的人有所帮助:
在机器 B 的 httpd.conf 文件中添加以下内容:
ProxyPass /v1/customer C.C.C.C:8000/v1/customer
ProxyPassReverse /v1/customer C.C.C.C:8000/v1/customer
因此,如果来自客户端(机器 A)的调用是 B.B.B.B/v1/customer,那么它将是 转发给 C.C.C.C:8000/v1/customer
ProxyPass 需要 mod_proxy 模块。
【讨论】:
勾选你自己的答案!我在 CherryPy 上遇到了完全相同的问题。 此链接提供有关此digitalocean.com/community/tutorials/… 的更多详细信息。 在 httpd.conf "LoadModule proxy_http_module modules/mod_proxy_http.so" 中取消注释后,上述解决方案对我有用以上是关于Apache 将请求转发到另一台服务器的主要内容,如果未能解决你的问题,请参考以下文章
iptables 路由转发, 将一台服务器的IP转发到另一个另一台服务器上面(远程序防护)