我有一个为网站提供内容的网络服务器,我们称之为“域名.com“。在该网站上,我有几个提供内容的 PHP 脚本。当有人浏览该网站时,一切都正常。
如果我在 PHP 中(使用 Curl/Fopen)请求我自己网站上的 URL(我将调用“domain.com/api/something.php?x=y”,我会得到一个暂停无法联系该网站。只有当我通过 PHP 请求该 URL 时才会发生这种情况,而不是通过 CLI 调用时。当我从外部浏览 URL 时,就可以了。
在服务器上,我可以“curl”或“wget”,而且可以正常工作。我可以使用 PHP 请求外部托管的页面(google.com 等),但无法对同一台服务器上的 lighttpd 配置上托管的页面执行此操作。
有人熟悉这个吗?是否有已知参数可能与此冲突?
答案1
搞定了!默认情况下,FreeBSD 上的 Lighttpd 配置如下:
fastcgi.server = ( ".php" =>
( "php-local" =>
(
"socket" => socket_dir + "/php-fastcgi-1.socket",
# "bin-path" => server_root + "/cgi-bin/php5",
"bin-path" => "/usr/local/bin/php-cgi",
"max-procs" => 1,
"broken-scriptfilename" => "enable",
)
),
关键的是:
"max-procs" => 1,
如果您将其更改为 50,它就可以正常工作。我假设它需要分叉另一个进程或某个东西来发出 CURL 请求,但无法做到,因为默认情况下 max-procs 设置为 1。
修改它,重新启动 Lighttpd,完美运行。耶!
答案2
您自己的盒子能否正确解析您使用的域名?如果您从 www.domain.com 请求文件,您可以从其自身 ping 'www.domain.com' - 当您从外部连接 ping 'www.domain.com' 时,它是否解析了将接收的正确外部 IP。
我在想:
1)机器名称在 /etc/hosts 中的别名为 127.0.0.1,并且您的 Web 服务器未绑定到环回地址
2)负载均衡器怎么样?你使用的负载均衡器在尝试路由到自身时是否可能导致路由问题
安德鲁