Avant-propos
Il existe deux méthodes de communication entre nginx et fastcgi, l'une est la méthode TCP et l'autre est la méthode socket Unix. Les deux méthodes ont leurs propres avantages et inconvénients. Voici d'abord deux méthodes de configuration, puis résumons les performances, la sécurité, etc.
TCP utilise le port TCP pour se connecter 127.0.0.1:9000
Socket utilise le socket de domaine Unix pour se connecter au socket /dev/shm/PHP-cgi.sock (de nombreux tutoriels utilisent le chemin /tmp , et le chemin /dev/shm est tmpfs, ce qui est beaucoup plus rapide que le disque). Lorsque la pression du serveur n'est pas élevée, il n'y a pas beaucoup de différence entre tcp et socket, mais lorsque la pression est relativement élevée, la méthode socket a un réel effet. Mieux.
Guide de configuration
1. Méthode de configuration TCP
La configuration de la communication TCP est très simple et peut être effectuée en trois étapes.
Première étape, modifiez /etc/nginx/conf.d/le fichier de configuration de votre site (si vous utilisez le fichier de configuration par défaut, modifiez /etc/nginx/sites-available/default)
Modifier le paramètre fastcgi_pass à 127.0.0.1:9000, comme ceci :
location ~ \.php$ { index index.php index.html index.htm; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
La deuxième étape consiste à éditer le fichier de configuration php-fpm /etc/php5/fpm/pool.d/www.conf
Changez le paramètre d'écoute en 127.0.0.1:9000, comme ceci :
listen=127.0.0.1:9000
La troisième étape, redémarrez php-fpm, redémarrez nginx
2. 🎜 >
Le socket Unix devrait en fait être appelé socket de domaine Unix au sens strict. Il s'agit d'une méthode largement utilisée de communication inter-processus (IPC) dans les systèmes *nix. Les fichiers (généralement .sock) sont utilisés comme. le seul socket. Identifiant (descripteur), deux processus qui doivent communiquer peuvent établir un canal de communication en référençant le même fichier de descripteur de socket. Le socket de domaine Unix ou socket IPC est un terminal qui permet à deux ou plusieurs processus sur le même système d'exploitation de communiquer des données. Contrairement aux canaux, les sockets de domaine Unix peuvent utiliser à la fois des flux d'octets et des files d'attente de données, tandis que la communication par canal ne peut s'effectuer que via des flux d'octets. L'interface des sockets de domaine Unix est très similaire à celle des sockets Internet, mais elle n'utilise pas le protocole réseau sous-jacent pour communiquer. La fonction du socket de domaine Unix est un composant du système d'exploitation POSIX. Les sockets de domaine Unix utilisent l'adresse d'un fichier système comme identité. Il peut être référencé par les processus système. Ainsi, deux processus peuvent ouvrir un socket de domaine Unix en même temps pour communiquer. Cependant, cette méthode de communication se produit dans le noyau du système et ne se propage pas dans le réseau.La configuration nécessite cinq étapes
La première étape consiste à déterminer l'emplacement de stockage de votre fichier de descripteur de socket. peut être placé n'importe où dans le système. Si vous souhaitez une vitesse de communication plus rapide, vous pouvez le placer sous /dev/shm. Ce répertoire est ce qu'on appelle tmpfs, qui est une zone qui peut être utilisée directement par. RAM Par conséquent, lisez La vitesse d’écriture sera très rapide. Après avoir décidé de l'emplacement du fichier, vous devez modifier les autorisations du fichier. Laissez nginx et php-fpm avoir les autorisations de lecture et d'écriture dessus. Vous pouvez faire ceci :sudo touch /dev/shm/fpm-cgi.sock sudo chown www-data:www-data /dev/shm/fpm-cgi.sock sudo chmod 666 /dev/shm/fpm-cgi.sock
listen=/dev/shm/fpm-cgi.sock
; Set listen(2) backlog. A value of '-1' means unlimited. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) listen.backlog = -1
location~\.php${ indexindex.phpindex.htmlindex.htm; include/etc/nginx/fastcgi_params; fastcgi_passunix:/dev/shm/fpm-cgi.sock; fastcgi_indexindex.php; includefastcgi_params; }
sudo echo'net.core.somaxconn = 2048'>>/etc/sysctl.conf sudo sysctl-p
ps : Si nginx effectue un équilibrage de charge, ne considérez pas du tout le socket Unix. Le seul moyen est d'utiliser TCP. Pour plus de connaissances sur PHP, veuillez visiter le
Tutoriel PHP !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!