FastCGI 원칙
FastCGI는 HttpServer와 동적 스크립팅 언어 간의 통신에 사용되는 인터페이스입니다. 가장 널리 사용되는 Http 서버는 Apache, Nginx 및 lighttpd를 포함한 FastCGI를 지원합니다. 동시에 FastCGI는 PHP를 포함한 많은 스크립팅 언어에서도 지원됩니다. > (추천 학습: nginx 튜토리얼 )
FastCGI 인터페이스는 HttP 서버와 스크립트 파싱 서버를 분리하고 동시에 스크립트 파싱 서버에서 하나 이상의 스크립트 파싱 데몬을 시작할 수 있는 C/S 구조를 채택합니다.
HttP 서버가 동적 프로그램을 만날 때마다 실행을 위해 FastCGI 프로세스로 직접 전달될 수 있으며 그 결과가 클라이언트에 반환됩니다. 이 방법을 사용하면 HTTP 서버가 정적 요청을 독점적으로 처리하거나 동적 스크립트 서버의 결과를 클라이언트에 반환할 수 있으므로 전체 응용 프로그램 시스템의 성능이 크게 향상됩니다.
Nginx+php-fpm 구현 원칙
Nginx 자체는 PHP를 구문 분석하지 않습니다. PHP 페이지에 대한 터미널 요청은 Nginx에 의해 FastCGI 프로세스에서 모니터링하는 IP 주소와 포트로 전달되며, php-fpm은 처리를 위해 서버를 동적 구문 분석하고 마지막으로 처리 결과를 nginx에 반환하는 역할을 합니다.
사실 Nginx는 역방향 프록시 서버입니다. Nginx는 역방향 프록시 기능을 통해 동적 요청을 백엔드 php-fpm으로 전달함으로써 PHP 구문 분석 지원을 실현합니다. 이것이 PHP 동적 구문 분석을 구현하는 Nginx의 원칙입니다.
Nginx는 외부 프로그램의 직접 호출이나 구문 분석을 지원하지 않습니다. 모든 외부 프로그램(PHP 포함)은 FastCGI 인터페이스를 통해 호출해야 합니다.
FastCGI 인터페이스는 Linux의 소켓입니다(이 소켓은 파일 소켓 또는 IP 소켓일 수 있습니다). CGI 프로그램을 호출하려면 FastCGI 래퍼도 필요합니다(래퍼는 다른 프로그램을 시작하는 데 사용되는 프로그램으로 이해될 수 있음). 이 래퍼는 포트나 파일 소켓과 같은 고정 소켓에 바인딩됩니다.
Nginx가 FastCGI 인터페이스를 통해 이 소켓에 CGI 요청을 보내면 래퍼는 요청을 수신한 다음 새 스레드를 생성하여 스크립트를 처리하고 반환 데이터를 읽습니다. 래퍼 반환된 데이터는 FastCGI 인터페이스를 통해 고정 소켓을 통해 Nginx로 전달됩니다. 마지막으로 Nginx는 반환된 데이터를 클라이언트에 보냅니다.
위 내용은 phpfpm과 nginx의 통신 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!