Maison  >  Questions et réponses  >  le corps du texte

php7 - Problèmes de configuration avec fastcgi_pass dans Nginx

Lors de la configuration de nginx, le problème de configuration de fastcgi_pass est le suivant :

    location ~ \.php$ {
        root           /home/wwwroot;
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
        #fastcgi_pass  unix:/tmp/php-cgi.sock;
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

Principalement à propos du paramètre fastcgi_pass,

#fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
#fastcgi_pass  unix:/tmp/php-cgi.sock;

Quelle est la différence entre ces deux méthodes ? Laquelle dois-je utiliser pour php7 ?

某草草某草草2713 Il y a quelques jours598

répondre à tous(1)je répondrai

  • 大家讲道理

    大家讲道理2017-05-16 17:20:04

    Il existe deux modes de communication inter-processus entre Nginx et PHP-FPM, l'un est TCP et l'autre est UNIX Domain Socket.
    TCP est IP plus port, qui peut être utilisé sur les serveurs UNIX Domain Socket. réseau et ne peut être utilisé que dans le scénario où Nginx et PHP-FPM sont tous deux sur le même serveur. Lequel utiliser dépend de votre configuration PHP-FPM :
    Méthode 1 :
    php-fpm.conf : Listen = 127.0.0.1. :9000
    nginx.conf : fastcgi_pass 127.0 .0.1:9000;
    Méthode 2 :
    php-fpm.conf : listening = /tmp/php-fpm.sock
    nginx.conf : fastcgi_pass unix :/tmp/php-fpm. sock;
    où php-fpm.sock C'est un fichier, généré par php-fpm, le type est srw-rw----.

    UNIX Domain Socket peut être utilisé pour deux processus non liés. Il s'agit d'un mécanisme IPC largement utilisé. Par exemple, la communication entre le serveur X Window et le programme GUI se fait via UNIX Domain Socket. La propagation dans le réseau.Le socket de domaine UNIX et les connexions longues peuvent éviter le problème du trop grand nombre de connexions TIME_WAIT causé par la création fréquente de connexions courtes TCP.Pour deux programmes communiquant entre les processus, le processus du socket de domaine UNIX ne passera pas à TCP. communiquer directement sous forme de fichiers et de socket de flux. S'il s'agit de TCP Socket, vous devez accéder à la couche IP. Pour différents serveurs, TCP Socket comporte plus d'étapes.

    Socket de domaine UNIX :

    Socket Nginx <=> PHP-FPM
    Socket TCP (bouclage local) :
    Socket Nginx <=> socket <=> PHP-FPM
    Socket TCP (Nginx et PHP-FPM sont sur des serveurs différents) :
    Nginx <=> socket <=> ; Routeur<=> Couche physique<=> TCP/IP <=>
    Comme le client de ligne de commande mysql, il existe deux manières similaires de se connecter au service mysqld :

    Utilisez Unix Socket pour vous connecter (par défaut) :

    mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock
    Utilisez la connexion TCP :
    mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
    使用TCP连接:
    mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306

    répondre
    0
  • Annulerrépondre