将数据库放在一台主机上,将 PHP 文件放在另一台主机上


Placing database on one host and PHP files on another

我试图弄清楚我是否可以以及如何在一个主机上运行PHP文件(即:Hostgator)并在单独的主机上运行数据库(即:Godaddy)。

我有cPanel Linux计划,并希望这样做作为隐私和安全措施,所以没有一个主机拥有我的所有数据。我目前无法运行自己的服务器,所以请不要建议这样做。

这可能吗?

是的。在 PHP 中为数据库设置连接字符串时,它通常包括称为主机名的内容,这是连接到远程数据库的方式。这是非常标准的行业惯例(我对此有一些经验),尽管它更多地与性能有关,然后与安全性有关。

是的,可以想象可以在托管提供商 A 上运行您的 Web 服务器,在托管提供商 B 上运行您的 MySQL 实例。

当您开始工作时,您的MySQL查询将通过两个提供商之间的公共网络传输,很可能是未加密的。一个典型的CMS网络应用程序(Joomla!,WordPress等)至少进行十个MySQL查询来获取呈现每个页面的信息。因此,您将有一堆长途查询往返,并且延迟会受到影响。

现在,也许这两个提供商之间有一条高速私人路线,但我觉得不太可能。

为什么未加密?为了在典型的共享托管提供商上获得盈利能力,重要的是在每台服务器上放置尽可能多的客户。处理来自客户端的加密连接所需的传输层安全代码会增加服务器开销。它还需要服务器加密证书管理。您可以使用此命令判断您的 MySQL 是否支持加密连接。

 SHOW VARIABLES LIKE 'have_ssl';

我使用的两个提供程序都对此查询回复"已禁用"。

要使其正常工作,您必须说服提供商 B 将提供商 A 的 IP 地址范围内的 MySQL 连接列入白名单(授权)。 一些提供商允许您将来自个人计算机的 MySQL 连接列入白名单,而其他提供商则不允许。此白名单是一项有风险的业务:您与提供商 B 的其他客户共享 MySQL 服务器。当外部地址被列入白名单时,所有这些共享客户都存在遭受俗气的拒绝服务攻击的风险。

因此,询问提供商 B 的支持人员是否会将提供商 A 列入 MySQL 连接的白名单。如果他们说这样做违反了他们的安全政策,请不要感到惊讶。

简而言之:

可能吗? 是的

效率高吗?

在这种情况下不,因为您将服务器彼此远离。当您的应用程序服务器和数据库服务器位于同一网络上或彼此靠近以获得更好的性能和安全性时,这实际上是很好的。现在,您实际上可以打开数据库以查找漏洞以及性能和安全性方面的一千个其他问题。

这是可能的。当你建立数据库连接时,你需要告诉PHP数据库在哪里。这默认为"这台机器",但你可以给它一个IP,它会在那里连接。

目标被赋予你正在使用的任何connect函数的构造函数。

如果您使用的是现有软件,那么这是否可行取决于所讨论的软件,但大多数人都会支持它。