У меня есть проект Laravel, которому нужен PHP 7.1, но на сервере мы используем 7.2. У нас есть отдельные файлы конфигурации nginx для каждого проекта, и все они работают нормально.
Я решил пойти ва-банк и использовать PHP 7.1 для проекта. Однако запускается как шарм из коробки ... После создания образов докеров я получаю следующее:
0 ✓ server /var/www/html/myproject.com/laradock $ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
В моей конфигурации NginX я пытаюсь переписать корневое расположение, например:
fastcgi_pass 127.0.0.1:9000;
Не повезло я получаю
2019/11/06 14:06:42 [error] 1287#1287: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 84.X.XX.207, server: myproject.com, request: "GET /item/show/24401 HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "myproject.com", referrer: "https://myproject.com/"
Есть идеи, что происходит? :(
ОБНОВИТЬ
Я попробовал еще раз, на этот раз с IP-адресом образа докера php-fpm, который я получил, выполнив nspect 9d15baXXXXXX | grep IPAddress
Теперь журнал выглядит так:
2019/11/06 14:58:49 [error] 12391#12391: *2 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 84.2.XX.XXX, server: myproject.com, request: "GET /item/show/2350 HTTP/2.0", upstream: "fastcgi://192.168.XX.X:9000", host: "myproject.com", referrer: "https://myproject.com/"
Все еще немного запутался в происходящем.
ОБНОВЛЕНИЕ # 2
Хорошо, я кое-что выяснил.
Во-первых, IP-адрес докера PHP-FPM хорош в fastcgi_pass
НО, Я ДОЛЖЕН переписать fastcgi_param SCRIPT_FILENAME
. Обычно у меня есть $document_root$fastcgi_script_name
там, но это не то же самое, что внутри докера. Мне пришлось изменить его на /var/www/public$fastcgi_script_name
. Но теперь все становится сложнее, поскольку теперь все, что я получаю, - это browser error 500 message
, поэтому в моем NginX нет логов.
Как мне отладить это?