PHP - $_SERVER['SERVER_ADDR']变量是否永远是唯一的并且永远不会改变?


PHP - Will the $_SERVER['SERVER_ADDR'] variable always be unique and never change?

我有三个关于PHP $_SERVER['SERVER_ADDR']变量的快速问题。变量是否唯一(在整个互联网上只有一个)?变量永远不会改变吗?如果这两个问题都是否定的,那么是否有一种方法可以通过PHP在internet上唯一地标识服务器?

你的问题有点不清楚,但在评论中你问:

所以我可以使用gethostbyname($_SERVER['SERVER_NAME'])来可靠地获取服务器的IP地址吗?

答案通常是。虽然服务器的主机名不会改变,但IP可以在web应用程序的生命周期内改变。IP变更的原因可能是服务器从一个主机重新定位到另一个主机。

或者甚至是基于轮循的DNS负载均衡,其中多个IP地址分配给相同的主机名。特别是当使用后者时,gethostbyname($_SERVER['SERVER_NAME'])将连续地为每个DNS请求提供不同的IP地址。

另一个原因可能是负载均衡器后面的web服务器。然后将负载均衡器的IP地址分配给主机名,在这种情况下,web服务器本身(PHP运行的地方)有内部地址。