찾다

 >  Q&A  >  본문

php7 - Nginx의 fastcgi_pass 구성 문제

nginx 구성 시 fastcgi_pass 구성 문제는 다음과 같습니다.

으아악

주로 fastcgi_pass 매개변수에 대해

으아악

이 두 가지 방법의 차이점은 무엇입니까? php7에는 어떤 방법을 사용해야 합니까?

某草草某草草2747일 전629

모든 응답(1)나는 대답할 것이다

  • 大家讲道理

    大家讲道理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

    mysql 명령줄 클라이언트와 마찬가지로 mysqld 서비스에 연결하는 두 가지 유사한 방법이 있습니다:

    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=3306mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306

    회신하다
    0
  • 취소회신하다