1

假设有 3 个服务器(ABC):

  • 服务器A只能访问服务器BA不能直接访问C。
  • B可以访问C
  • A , C在一个单独的网络中。

BC都是http 服务器,但只有C可以运行 PHP。

我必须使用 PHP从A从C中的 MySQL 服务器获取一些信息,可以这样做吗?

我无法将 PHP 安装到B

是否可以编写一个将在C中运行并将结果返回到B并返回到A的 PHP 页面?

4

3 回答 3

1

您需要让 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的代理请求。

于 2011-08-24T10:18:31.613 回答
1
于 2011-08-24T10:07:42.910 回答
0

我不明白你所说的'来自A的C中的mysql服务器'是什么意思。我假设您的意思是将 MySQL 数据从 A 传输到 C,因为 A 不是 HTTP 服务器(您只提到 B 和 C 是)。您可以将随机端口(例如 B 上的 3310)路由到 A 上的端口 3306,这样您就可以直接从 C 访问 A 的 MySQL 服务器(尽管您必须在 A 上启用远程访问)。我假设您在 3 台服务器上拥有管理员权限。

于 2011-08-24T10:13:00.663 回答