nginx 구성 시 fastcgi_pass 구성 문제는 다음과 같습니다.
으아악주로 fastcgi_pass 매개변수에 대해
으아악이 두 가지 방법의 차이점은 무엇입니까? php7에는 어떤 방법을 사용해야 합니까?
大家讲道理2017-05-16 17:20:04
Nginx와 PHP-FPM 간의 프로세스 간 통신에는 두 가지 방법이 있습니다. 하나는 TCP이고 다른 하나는 UNIX 도메인 소켓입니다.
TCP는 UNIX 도메인 소켓을 거치지 않는 IP 플러스 포트입니다. Nginx와 PHP-FPM이 모두 동일한 서버에 있는 시나리오에서만 사용할 수 있습니다. 어떤 것을 사용할지는 PHP-FPM 구성에 따라 다릅니다.
방법 1:
php-fpm.conf: listening = 127.0.0.1 :9000
nginx.conf: fastcgi_pass 127.0 .0.1:9000;
방법 2:
php-fpm.conf: Listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm. sock;
여기서 php-fpm.sock php-fpm에 의해 생성된 파일이며 유형은 srw-rw---.
UNIX 도메인 소켓은 서로 관련되지 않은 두 프로세스에 사용될 수 있습니다. 예를 들어 X Window 서버와 GUI 프로그램 간의 통신은 시스템 커널에서 발생하지 않습니다. UNIX 도메인 소켓과 긴 연결 모두 TCP 짧은 연결을 자주 생성하여 발생하는 너무 많은 TIME_WAIT 연결 문제를 피할 수 있습니다. 프로세스 간에 통신하는 두 프로그램의 경우 UNIX 도메인 소켓 프로세스는 TCP 계층으로 이동하지 않습니다. 파일 및 스트림 소켓 형태로 직접 통신합니다. TCP 소켓인 경우 IP 계층으로 이동해야 합니다. 다른 서버의 경우 TCP 소켓에는 더 많은 단계가 있습니다.
UNIX 도메인 소켓:Nginx <=> 소켓 <=> PHP-FPM
TCP 소켓(로컬 루프백):
Nginx <=> TCP/IP 소켓 <=> PHP-FPM
TCP 소켓(Nginx와 PHP-FPM은 서로 다른 서버에 있음):
Nginx <=> TCP/IP <=> ; 라우터<=> TCP/IP <=> PHP-FPM
Unix 소켓을 사용하여 연결(기본값): mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock
TCP 연결 사용:mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
使用TCP连接:mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306