Rumah  >  Soal Jawab  >  teks badan

php7 - Isu konfigurasi dengan fastcgi_pass dalam Nginx

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?

某草草某草草2713 hari yang lalu590

membalas semua(1)saya akan balas

  • 大家讲道理

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

    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

    balas
    0
  • Batalbalas