Прямое подключение к PHP-FPM

Во время отладки иногда необходимо сначала выявить проблему и понять это проблема из-за PHP или Nginx делает что-то не правильно. В этом случае может пригодиться cgi-fcgi. Установка cgi-fcgi на Ubuntu Достаточно запустить команду: 1 apt-get install libfcgi0ldbl Подключение к PHP-FPM на прямую Предполагаем что вы запустили PHP-FPM используя TCP/IP с IP и PORT значениями 127.0.0.1 и 9000 соответственно. Ниже приведены некоторые примеры кода, которые вы можете использовать. Тест ответа PHP-FPM Ping Вы можете запустить следующий код из командной строки что бы протестировать ответ FPM: 1 2 3 4 SCRIPT_NAME=/ping \ SCRIPT_FILENAME=/ping \ REQUEST_METHOD=GET \ cgi-fcgi -bind -connect 127.0.0.1:9000 Должен быть возвращён подобный ответ: 1 2 3 4 Content-Type: text/plain Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 pong Тест ответа PHP-FPM Status Вы можете запустить следующий код из командной строки что бы протестировать ответ FPM 1 2 3 4 SCRIPT_NAME=/status \ SCRIPT_FILENAME=/status \ REQUEST_METHOD=GET \ cgi-fcgi -bind -connect 127.0.0.1:9000 Должен быть возвращён подобный ответ: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Content-Type: text/plain pool: www process manager: dynamic start time: 08/Jan/2014:15:04:57 +0530 start since: 93492 accepted conn: 1215 listen queue: 0 max listen queue: 1 listen queue len: 0 idle processes: 26 active processes: 4 total processes: 30 max active processes: 34 max children reached: 0 slow requests: 150 Тест ответа PHP-FPM Full Status Если вы хотите протестировать ответ PHP-FPM Full Status, вы можете использовать команды: ...

15 лютого 2017 · 2 хвилин · 307 слів · dimetrius

SSL между фронтендом и бэкендом через несколько прокси серверов

Сложность в том, что некоторым скриптам необходимо знать через какую схему они работают, http, или https. Таким образом они формируют ссылки, а иногда принудительно перенаправляют клиентов куда нужно. Из-за не верной настройки серверного ПО переадресация не может завершиться и браузер покажет нам ошибку ‘too many redirects’. В статье рассмотрим две схемы: nginx (front1, server2) -> nginx (front2, server1) -> php-fpm (back, server1) nginx (front1, server2) -> nginx (front2, server1) -> apache (back, server1) Первой рассмотрим схему с php-fpm: nginx (front1, server2) -> nginx (front2, server1) -> php-fpm (back, server1) На сервере nginx (front1, server2) у нас обязательно должны быть строки 1 2 3 4 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; среди которых нам важна последняя. На сервере nginx (front2, server1) в секцию http добавляем 1 2 3 4 5 6 7 8 http { ... map $http_x_forwarded_proto $fastcgi_https { default off; https on; } ... } Если его добавить в любое другое место - получите следующую ошибку при перезапуске nginx: 1 nginx: [emerg] "map" directive is not allowed here Если прописать просто $https вместо $fastcgi_https - получите следующую ошибку: 1 nginx: [emerg] the duplicate "https" variable in /etc/nginx/nginx.conf Дело в том, что начиная с какой-то бородатой версии NginX имеет встроенную переменную $https, поэтому ее повторно использовать не получится. ...

25 вересня 2016 · 3 хвилин · 476 слів · dimetrius