nginx - PHP-CGI 실행 프로세스에 대한 질문이 있습니다. 해결해 주세요.
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 17:23:26
0
3
804

php-cgi 사용법에 대해 몇 가지 의문점이 있습니다. 도와주세요.

가설 시나리오는 다음과 같습니다.
nginx 모니터 192.168.1.101:80, PHP 환경이 없습니다
index.php 192.168.1.101::/dev/shm/index.php
php-fpm 듣기 192.168.1.102:90000

혼란스러운 점은 실행 프로세스 중에 index.php가 구문 분석되어 192.168.1.101에서 실행됩니까, 아니면 구문 분석 및 실행을 위해 192.168.1.102로 전송된다는 것입니다. 자세한 과정을 전문가가 설명해 주실 수 있나요?

1.102에서 파싱해서 실행하는 경우, phar 등 상대적으로 큰 코드 패키지나 하나의 큰 PHP 파일을 만나면 전체 패키지가 함께 전송되나요? 인트라넷 트래픽이 인상적이지 않나요?

曾经蜡笔没有小新
曾经蜡笔没有小新

모든 응답(3)
仅有的幸福

Nginx 모니터링 192.168.1.101:80은 PHP-FPM이 모니터링하는 192.168.1.102:9000에 fastcgi_pass를 통해 PHP 요청을 배포합니다. PHP-FPM은 Nginx 요청에 따라 Nginx가 전달한 매개변수 $_SERVER['SCRIPT_FILENAME'을 구문 분석합니다. 지정된 PHP 파일, PHP-FPM 작업 프로세스 내부의 PHP 인터프리터가 스크립트를 실행하고 결과를 LAN을 통해 Nginx에 반환합니다.

TCP 네트워크 통신은 Nginx와 PHP-FPM 프로세스 간에 사용되는 반면, PHP 인터프리터를 Apache 프로세스(스레드)에 모듈로 통합하는 MOD_PHP는 완전히 다릅니다. Nginx의 업스트림을 통해 구현하기가 매우 쉽습니다. PHP-FPM 클러스터 및 고가용성.

또한:
Apache는 mod_fastcgi 모듈을 통해 PHP-FPM과 함께 사용할 수 있습니다. 이 경우 Apache는 다중 프로세스, 다중 스레드 epoll 이벤트 기반 MPM인 PHP-FPM을 사용하는 것이 좋습니다. 더 효율적이고 안정적인 안전한 버전입니다.
Apache는 mod_fcgid 모듈을 통해 PHP-CGI와 함께 사용할 수 있습니다. 위와 동일하게 사용하는 것이 좋습니다.
Apache의 mod_fastcgi 모듈은 Nginx에서 제공하는 fastcgi 지원과 유사합니다. 해당 기능은 mod_fcgid와 다르며 mod_fcgid보다 더 효율적입니다. 왜냐하면 mod_fcgid는 PHP-CGI 프로세스를 자체적으로 관리해야 하는 반면, PHP-FPM 기본 프로세스는 mod_fastcgi 아래에 있기 때문입니다. 자체 FPM 프로세스를 관리합니다.

Peter_Zhu

@白一子와 @eechen에게 답변해주셔서 감사합니다. 사실 이 질문을 하면 192.168.1.102 머신에 PHP 스크립트를 설치해야 하는지 알고 싶습니다. 예전에는 Apache를 주로 사용하고 php-fpm은 거의 사용하지 않았기 때문이죠~

환경 설정을 위해 서버 두 대를 방금 찾았으니 아마 이해가 되실 겁니다.

실제로 php-fpm은 nginx로부터 헤더인 fastcgi_param만 받아서 SCRIPT_FILENAME을 찾아 1.102 자체 하드디스크에서 스크립트를 로딩해서 실행하는데, 이것이 nginx와 php-fpm 사이의 전송과정이다. 헤더일 뿐이고 스크립트와는 아무런 관련이 없으며, 아파치처럼 헤더를 통해 PHP 코드를 실행합니다~

즉, apache의 다른 고급 기능이나 내부 동작 원리와 관계없이 nginx + php-fpm과 nginx + apache의 실행 프로세스는 기본적으로 동일합니다~~

仅有的幸福

이것은 이미 /q/1010000002753412 질문에 답변을 제공했습니다. 제 답변에 흐름도가 나와 있으므로 이해하기 쉬울 것입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿