Maison > Questions et réponses > le corps du texte
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 ?
大家讲道理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 :
mysql -uroot -p --protocol=socket --socket=/tmp /mysql.sock
Utilisez la connexion TCP :mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306
mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock
使用TCP连接:mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306