Lighttpd:通过 PHP 请求本地 URL

Lighttpd:通过 PHP 请求本地 URL

我有一个为网站提供内容的网络服务器,我们称之为“域名.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)负载均衡器怎么样?你使用的负载均衡器在尝试路由到自身时是否可能导致路由问题

安德鲁

相关内容