Apache将请求转发到另一台服务器

17
我希望Apache将发送到一个服务器的请求转发到另一个服务器。以下是完整的场景:
有3台服务器:
  1. 机器A - IP:A.A.A.A - 客户端想要在机器C上调用API的机器
  2. 机器B - IP:B.B.B.B - 中间机器
  3. 机器C - IP:C.C.C.C - 托管API的机器
API的URL:http://Machine c:8000 /v1/customer/....。
连接状态:
  1. 从机器A ->机器B:端口80上的Telnet - 良好
  2. 从机器B ->机器C:端口8000上的Telnet - 良好
  3. 从机器A ->机器C:端口8000上的Telnet - 差
理想情况下,我想从机器A调用机器C上的API,但由于我在A和C之间没有直接的网络连接,因此我必须采取这种方式。
因此,我想在机器B上设置Apache服务器,使得从机器A发出API调用: http:// Machine B :80 /v1/customer/ ... 然后将其转发到端口8000上的机器C。C提供服务并将响应发送回A。
这个任务可能很简单,但由于我对Apache还不熟悉,如果有人能告诉我解决方案,那对于我明天的截止日期来说就太好了 :)
谢谢!
1个回答

21
经过一些研究和进一步搜索,我能够完成它。这是我所做的 - 对于那些遇到相同问题的人可能会有所帮助:
在机器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 需要mod_proxy模块才能使用ProxyPass。

1
我也遇到了与CherryPy完全相同的问题。请勾选您自己的答案! - william.berg
此链接提供了更详细的信息:https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension。 - ss_everywhere
在 httpd.conf 文件中取消注释 "LoadModule proxy_http_module modules/mod_proxy_http.so" 这一行后,上述解决方案对我有效。 - Vinaykumar Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接