php7 - Isu konfigurasi dengan fastcgi_pass dalam Nginx
某草草
某草草 2017-05-16 17:18:04
0
1
627

Apabila mengkonfigurasi nginx, masalah konfigurasi fastcgi_pass adalah seperti berikut:

    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;
    }

Terutamanya mengenai parameter fastcgi_pass,

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

Apakah perbezaan antara kedua-dua kaedah ini yang manakah harus saya gunakan untuk php7?

某草草
某草草

membalas semua(1)
大家讲道理

Terdapat dua cara komunikasi antara proses antara Nginx dan PHP-FPM, satu ialah TCP dan satu lagi ialah UNIX Domain Socket
TCP ialah IP plus port, yang boleh digunakan di seluruh pelayan UNIX Domain Socket rangkaian dan hanya boleh digunakan Dalam senario di mana Nginx dan PHP-FPM kedua-duanya berada pada pelayan yang sama yang mana satu untuk digunakan bergantung pada konfigurasi PHP-FPM anda:
Kaedah 1:
php-fpm.conf: listen = 127.0.0.1. :9000
nginx.conf: fastcgi_pass 127.0 .0.1:9000;
Kaedah 2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi.pass unix:/tmp/php sock;
di mana php-fpm.sock Ia adalah fail, dijana oleh php-fpm, jenisnya ialah srw-rw----.

Soket Domain UNIX boleh digunakan untuk dua proses yang tidak berkaitan Ia adalah mekanisme IPC yang digunakan secara meluas Sebagai contoh, komunikasi antara pelayan X Window dan program GUI adalah melalui Soket Domain UNIX Ini tidak akan berlaku tersebar dalam rangkaian. Kedua-dua Soket Domain UNIX dan sambungan panjang boleh mengelakkan masalah terlalu banyak sambungan TIME_WAIT yang disebabkan oleh kerap membuat sambungan pendek TCP Untuk dua program yang berkomunikasi antara proses, proses Soket Domain UNIX tidak akan pergi ke TCP. berkomunikasi secara langsung dalam bentuk fail dan soket aliran Jika ia adalah Soket TCP, anda perlu pergi ke lapisan IP Untuk pelayan yang berbeza, Soket TCP mempunyai lebih banyak langkah

Soket Domain UNIX:

Soket Nginx <=> soket <=> PHP-FPM
Soket TCP (Nginx dan PHP-FPM berada pada pelayan berbeza):
Soket <=> TCP/IP <=> ;Penghala<=> Lapisan fizikal<=>
Seperti pelanggan baris arahan mysql, terdapat dua cara yang sama untuk menyambung ke perkhidmatan mysqld:
Gunakan Unix Socket untuk menyambung (lalai):
mysql -uroot -p --protocol=socket --socket=/tmp /mysql. sock

Gunakan sambungan TCP:

mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan