Назад | Перейти на главную страницу

Lighttpd: запрос локальных URL-адресов через PHP

У меня есть веб-сервер, который обслуживает контент для сайта, назовем его "domain.com". На этом сайте у меня есть несколько сценариев PHP, которые обслуживают контент. Когда кто-то заходит на этот сайт, все работает.

Если я запрашиваю из PHP (с помощью Curl / Fopen) URL-адрес моего собственного сайта (я назову "domain.com/api/something.php?x=y", я получаю тайм-аут что с сайтом не удалось связаться. Это происходит только тогда, когда я запрашиваю этот URL-адрес через PHP, а не при вызове через CLI. Когда я просматриваю URL извне, это работает.

На сервере я могу использовать curl или wget, и это работает. Я могу использовать PHP для запроса страниц, размещенных на внешнем сервере (google.com и т. Д.), Но я не могу сделать это со страницами, размещенными в моей конфигурации lighttpd на том же сервере.

Это кому-нибудь знакомо? Есть ли известные параметры, которые могут противоречить этому?

ДОГАДАТЬСЯ! По умолчанию Lighttpd на FreeBSD настроен следующим образом:

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, работает отлично. Да!

Может ли ваш собственный ящик правильно распознавать доменное имя, которое вы используете? Если вы запрашиваете файлы с www.domain.com, можете ли вы ping 'www.domain.com' от себя - разрешает ли он правильный внешний IP-адрес, который будет получен, когда вы ping 'www.domain.com' из внешнего соединения .

Я думаю:

1) Имя машины имеет псевдоним в вашем / etc / hosts как 127.0.0.1, и ваш веб-сервер не привязан к адресу обратной связи.

2) Что насчет балансировщиков нагрузки, используете ли вы какие-либо из них, которые могут вызвать проблемы с маршрутизацией при попытке маршрутизации к себе

Андрей