我认为这个最好用代码来解释。从网络目录:
vi get.php
将此 php 添加到 get.php
<?
echo file_get_contents("http://IPOFTHESERVER/");
?>
IPOFTHESERVER 是运行 nginx 和 PHP 的服务器的 IP。
php get.php
返回该 IP 托管的(默认)网站的内容。但是
..返回504网关超时。 curl 也是如此。使用 PHP exec 命令和 GET 是一样的。但是,直接从命令行一切正常。
我已将其复制到 2 个 nginx 服务器上。由于某种原因,nginx 不允许我通过 PHP 与其运行的服务器建立 HTTP 连接(除非是通过命令行)。
有人知道为什么吗?
谢谢!
最佳答案
检查您是否在 PHP 方面遇到工作人员耗尽问题,这是我的实验室服务器设置的问题,该服务器配置为节省 RAM。
基本上我忘记了您使用单个工作人员来处理显示给最终用户的主页,然后 get_file_contents() 函数基本上会向同一 Web 服务器生成单独的 HTTP 请求,实际上需要 2 个工作人员来处理单页加载。
由于首页正在使用最后一个工作程序,因此没有可用的 get_file_contents 函数,因此 Nginx 最终在首页上回复了 504,因为反向代理请求没有回复。
关于php - Nginx 和 PHP-cgi - 无法 file_get_contents 服务器上的任何网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230719/