假设有 3 个服务器(A、B和C):
- 服务器A只能访问服务器B,A不能直接访问C。
- B可以访问C。
- A , C在一个单独的网络中。
B和C都是http 服务器,但只有C可以运行 PHP。
我必须使用 PHP从A从C中的 MySQL 服务器获取一些信息,可以这样做吗?
我无法将 PHP 安装到B。
是否可以编写一个将在C中运行并将结果返回到B并返回到A的 PHP 页面?
您需要让 B 充当代理。这个想法是您只需将收到的请求直接路由到 B 到 C。
概述...并且您想要获取位于 C 到 A 上的信息。
(HTTP,PHP) A -----> B (HTTP,PHP)
(HTTP,PHP) A --|| C (HTTP,MySQL)
(HTTP,PHP) B -----> C (HTTP, MySQL)
(HTTP,PHP) A -----> B (HTTP->ProxyPass,PHP)
(HTTP,PHP) A --|| C (HTTP,MySQL)
(HTTP->ProxyPass,PHP) B -----> C (HTTP, MySQL)
A->B(Proxied to)->C
http://httpd.apache.org/docs/2.1/mod/mod_proxy.html#proxypass
假设本地服务器地址为http://example.com/;然后
ProxyPass /mirror/foo/ http://backend.example.com/
将导致对http://example.com/mirror/foo/bar的本地请求在内部转换为对http://backend.example.com/bar的代理请求。
我不明白你所说的'来自A的C中的mysql服务器'是什么意思。我假设您的意思是将 MySQL 数据从 A 传输到 C,因为 A 不是 HTTP 服务器(您只提到 B 和 C 是)。您可以将随机端口(例如 B 上的 3310)路由到 A 上的端口 3306,这样您就可以直接从 C 访问 A 的 MySQL 服务器(尽管您必须在 A 上启用远程访问)。我假设您在 3 台服务器上拥有管理员权限。