Apache PHP-FPM https по-прежнему пытается использовать www.sock, но это изменено на listen = 127.0.0.1:9081.

Вопрос или проблема

У меня есть сервер, который не был настроен мной. Он нормально работает с http-доступом, даже php в порядке. Но когда я пытаюсь использовать https, я получаю ошибку “сервис недоступен”.

Смотрев в error_logs, я вижу:
[proxy:error] [pid 1503799:tid 1503853] (2)Нет такого файла или каталога: AH02454: FCGI: попытка соединения с Unix-сокетом /var/opt/remi/php81/run/php-fpm/www.sock (*) не удалась
[proxy_fcgi:error] [pid 1503799:tid 1503853] [client 192.168.1.202:59877] AH01079: не удалось установить соединение с бэкендом: httpd-UDS, реферер: https://myhost.mydomain.local/

Но конфигурация /etc/opt/remi/php81/php-fpm.d/www.conf показывает, что он слушает на listen = 127.0.0.1:9081, а не на www.sock (думаю, он когда-то был настроен для www.sock, потому что есть также файл www.conf.bak, который показывает эту настройку). Но почему эта ошибка возникает только при попытке использовать https?

Ответ или решение

Судя по предоставленной информации, возникает ошибка при попытке установить соединение с PHP-FPM через HTTPS. При этом, в ваших конфигурационных файлах явно указано, что PHP-FPM должен слушать адрес 127.0.0.1:9081, но Apache пытается подключиться к Unix-сокету /var/opt/remi/php81/run/php-fpm/www.sock, что указывает на несоответствие в настройках.

Вот несколько шагов, которые могут помочь решить эту проблему:

  1. Проверьте конфигурацию Apache:
    Убедитесь, что в конфигурационных файлах Apache, которые обрабатывают HTTPS-запросы (обычно это файлы с расширением .conf в папках /etc/httpd/conf.d/ или /etc/apache2/sites-available/), не осталось ссылок на сокет www.sock. Если в конфигурации есть директивы, которые используют ProxyPassMatch, замените их на IP-адрес и порт, на котором действительно слушает ваш PHP-FPM.

    Например, если у вас было что-то вроде:

    <LocationMatch "\.php$">
       SetHandler "proxy:unix:/var/opt/remi/php81/run/php-fpm/www.sock|fcgi://localhost/"
    </LocationMatch>

    Замените это на:

    <LocationMatch "\.php$">
       SetHandler "proxy:fcgi://127.0.0.1:9081/"
    </LocationMatch>
  2. Проверьте наличие другого виртуального хоста:
    Убедитесь, что конфигурации виртуальных хостов для HTTP и HTTPS действительно указывают на одно и то же местоположение для файлов PHP. Возможно, HTTPS виртуальный хост был настроен по-другому, и он ссылается на устаревшую конфигурацию, которая использует сокет.

  3. Перезапустите службы:
    После внесения всех изменений перезапустите как сервер Apache, так и PHP-FPM. Это позволит применить изменения конфигурации. Вы можете сделать это следующими командами:

    sudo systemctl restart httpd  # для Apache
    sudo systemctl restart php81-php-fpm  # для PHP-FPM
  4. Проверьте логи:
    Если ошибка не пропала, внимательно изучите логи Apache (/var/log/httpd/error_log или аналогичный файл) и логи PHP-FPM, чтобы получить дополнительную информацию об ошибках подключения.

  5. Тестирование:
    Попробуйте снова получить доступ к вашему приложению через HTTPS и проверьте, исчезла ли ошибка. Убедитесь, что все настройки кэша и брандмауэра также соответствуют требованиям для корректной работы с HTTPS.

Следуя этим шагам, вы должны исключить возможность ошибки, связанной с подключением через www.sock, и обеспечить правильное подключение к вашему PHP-FPM через 127.0.0.1:9081.

Оцените материал
Добавить комментарий

Капча загружается...