Cara menyambungkan nginx ke php-fpm menggunakan soket unix atau tcp/ip

Cara menyambungkan nginx ke php-fpm menggunakan soket unix atau tcp/ip

Nginx Pelayan web (sebagai proksi terbalik) melayani aplikasi PHP melalui Fastcgi protokol (sebagai pelayan aplikasi backend). Nginx menggunakan PHP-FPM (Pengurus Proses Fastcgi), alternatif Php fastcgi pelaksanaan yang berjalan di latar belakang sebagai daemon, mendengar CGI permintaan. Ia dilengkapi dengan ciri-ciri tambahan yang direka untuk menggerakkan laman web atau aplikasi web yang dimuatkan berat, tetapi ia boleh digunakan untuk laman web dari mana-mana saiz.

Bukan sahaja PHP-FPM Sokong konfigurasi Fastcgi kolam sumber, tetapi ia juga meningkatkan banyak Fastcgi dalaman dan meningkatkan pelaporan ralat, penamatan skrip, dan banyak lagi. Ia mempunyai syaitan PHP, pengurusan proses, bilangan proses yang dinamik dari mana permintaan boleh datang, header ralat, sokongan muat naik dipercepat, dan banyak lagi.

Untuk menerima Fastcgi permintaan dari Nginx, PHP-FPM sama ada boleh mendengar di TCP/IP soket soket atau unix domain. Mana -mana alamat yang anda pilih untuk digunakan adalah apa Nginx penggunaan untuk menyambung (permintaan proksi) ke PHP-FPM, menggunakan fastcgi_pass arahan.

Panduan ini menerangkan cara mengkonfigurasi Nginx ke aplikasi PHP pelayan menggunakan PHP-FPM. Ia menerangkan bila menggunakan a TCP/IP soket soket atau unix domain untuk disambungkan Nginx ke PHP-FPM dan mengapa.

Panduan ini menganggap bahawa anda mempunyai Nginx dan PHP-FPM dipasang pada sistem Linux anda, jika tidak, lihat:

  • Cara Memasang Pelayan Lemp pada CentOS 8
  • Cara Memasang Lemp Stack Phpmyadmin di Ubuntu 20.04 pelayan
  • Cara Memasang Nginx, MySQL/MariaDB, dan PHP di RHEL 8
  • Cara memasang Lemp pada pelayan Debian 10

Apa yang harus saya gunakan: soket domain UNIX atau soket TCP/IP?

Unix domain (atau IPC) soket adalah cara komunikasi antara proses (IPC) yang membolehkan pertukaran data yang cekap antara proses yang berjalan pada sistem operasi yang sama sementara TCP/IP (atau Domain Internet) soket membenarkan proses berkomunikasi melalui rangkaian.

Tidak seperti a TCP/IP soket yang mengenal pasti pelayan oleh alamat IP dan port (e.g 127.0.0.1: 9000), anda boleh mengikat pelayan ke soket domain Unix menggunakan nama laluan fail (e.g /Run/PHP-FPM/www.kaus kaki), yang dapat dilihat dalam sistem fail.

Soket domain UNIX adalah jenis fail khas - fail dan kebenaran direktori memohon kepadanya (seperti yang berlaku dengan mana -mana jenis fail Unix yang lain) dan boleh digunakan untuk menyekat proses mana yang boleh dibaca dan ditulis ke fail, (dan dengan itu berkomunikasi dengan pelayan backend).

Dengan cara ini, soket domain unix selamat kerana hanya proses pada tuan rumah tempatan boleh menggunakannya. A TCP/IP soket mungkin terdedah kepada internet yang menimbulkan risiko keselamatan melainkan langkah keselamatan tambahan seperti firewall dilaksanakan.

Yang penting, menggunakan a Unix soket domain tidak sama dengan menggunakan a TCP/IP soket mengenai prestasi, beberapa ujian dan tanda aras telah membuktikan soket domain unix lebih cepat. Kelemahan utama soket domain UNIX adalah bahawa mereka kurang berskala, mereka hanya menyokong komunikasi antara proses dalam sistem operasi yang sama (OS).

Di mana saya boleh mengkonfigurasi alamat pendengaran php-fpm?

Anda boleh mengkonfigurasi alamat PHP-FPM mendengar dalam fail konfigurasi kolam sumber. Perhatikan bahawa dengan PHP-FPM, anda boleh menjalankan beberapa kolam proses dengan tetapan yang berbeza. Kolam lalai dipanggil www.

Lokasi fail konfigurasi kolam sumber bergantung pada jalan Php dan PHP-FPM dipasang pada sistem Linux (sama ada versi lalai/tunggal atau pelbagai versi serentak).

Contohnya, pada Centos 8, Dengan satu versi, semua fail konfigurasi PHP terletak di /dan lain-lain direktori dan lalai PHP-FPM kolam (www) Fail konfigurasi adalah /etc/php-fpm.D/www.Conf:

Untuk menyenaraikan semua fail konfigurasi PHP, gunakan arahan LS berikut.

# ls /etc /php* 
Senaraikan semua fail konfigurasi PHP

Pada Ubuntu 20.04, Fail konfigurasi PHP terletak di /etc/php // direktori dan lalai PHP-FPM kolam (www) Fail konfigurasi adalah /etc/php // fpm/kolam.D/www.Conf:

$ ls/etc/php/7.4/ 
Senaraikan semua fail konfigurasi PHP di Ubuntu

Mengkonfigurasi PHP-FPM untuk mendengar di soket domain Unix

Untuk mengkonfigurasi PHP-FPM Untuk mendengar di soket domain Unix, buka lalai anda PHP-FPM fail konfigurasi kolam, menggunakan editor teks kegemaran anda.

$ sudo vim/etc/php/7.4/fpm/kolam.D/www.conf # ubuntu/debian atau # vim/etc/php-fpm.D/www.conf #centos/rhel/fedora 

Kemudian cari arahan dengar dan tetapkannya ke Nama Pathname dari soket domain Unix seperti berikut. Perhatikan bahawa kebanyakan pemasangan menggunakan soket domain unix secara lalai.

Dengar =/run/php/php7.4-fpm.sock #ubuntu/debian atau mendengar =/run/php-fpm/www.Sock #CentOS/RHEL/FEDORA 

Jika anda menggunakan soket domain UNIX, anda juga perlu menetapkan kebenaran baca/tulis yang sesuai untuk fail, untuk membenarkan sambungan dari pelayan web nginx. Secara lalai, Nginx berjalan sebagai pengguna dan kumpulan nginx pada Centos/rhel/fedora dan www-data pada Ubuntu dan Debian.

Jadi, cari Dengarkan.pemilik dan Dengarkan.kumpulan parameter dan tetapkannya dengan sewajarnya. Juga, tetapkan mod ke 0660 menggunakan Dengarkan.mod parameter.

------------- Di Debian dan Ubuntu ------------- Dengarkan.pemilik = www-data dengar.kumpulan = www-data dengar.mod = 0660 ------------- Di Centos/Rhel dan Fedora ------------- Dengarkan.pemilik = nginx dengar.kumpulan = nginx dengar.mod = 0660 

Perhatikan bahawa jika kebenaran pada fail soket domain unix tidak ditetapkan dengan betul, nginx boleh mengembalikan ralat gerbang yang buruk.

Konfigurasi PHP-FPM

Mengkonfigurasi PHP-FPM untuk mendengar di soket TCP/IP

Walaupun soket domain Unix lebih cepat daripada soket TCP/IP, bekas kurang berskala, kerana ia hanya dapat menyokong komunikasi antara proses pada OS yang sama. Jika Nginx dan pelayan aplikasi backend (PHP-FPM) berjalan pada sistem yang berbeza, anda perlu mengkonfigurasi PHP-FPM Untuk mendengar di soket TCP/IP untuk sambungan.

Di dalam PHP-FPM fail konfigurasi kolam, tetapkan Dengarkan alamat seperti berikut. Pastikan pelabuhan yang anda pilih tidak digunakan oleh proses atau perkhidmatan lain pada sistem yang sama.

Dengar = 127.0.0.1: 3000 
Konfigurasi PHP-FPM untuk soket TCP

Mengkonfigurasi Nginx untuk bekerjasama dengan Pelayan Aplikasi PHP-FPM

Sebaik sahaja anda telah mengkonfigurasi alamat PHP-FPM mendengar, anda perlu mengkonfigurasi Nginx kepada permintaan proksi kepadanya melalui alamat itu, menggunakan fastcgi_pass Parameter Konfigurasi, dalam fail konfigurasi blok pelayan maya.

Sebagai contoh, jika fail konfigurasi untuk laman web anda adalah /etc/nginx/conf.d/contoh.com.Conf, Buka untuk mengedit.

# vim/etc/nginx/conf.d/contoh.com.Conf 

Cari Lokasi blok untuk pemprosesan .php fail dan tetapkan fastcgi_pass Parameter seperti berikut, jika anda mengkonfigurasi PHP-FPM untuk mendengar di soket domain UNIX.

fastcgi_pass unix:/run/php/php7.4-fpm.sock #ubuntu/debian atau fastcgi_pass unix:/run/php-fpm/www.Sock #CentOS/RHEL/FEDORA 
Sambungkan nginx ke php-fpm menggunakan soket unix

Atau gunakan a TCP/IP alamat jika anda dikonfigurasikan PHP-FPM untuk mendengar di TCP/IP soket. Sekiranya pelayan aplikasi backend (PHP-FPM) berjalan pada pelayan yang berasingan (ganti 10.42.0.10 dengan alamat IP mesin di mana pelayan fastcgi php-fpm berjalan).

fastcgi_pass 10.42.0.10: 3000; 
Sambungkan nginx ke php-fpm menggunakan soket tcp

Penting: Pada Centos 8, PHP-FPM ditakrifkan sebagai pelayan huluan di /etc/nginx/conf.D/PHP-FPM.Conf fail, dalam blok hulu, dengan nama PHP-FPM.

Anda boleh membuat perubahan di sini dengan sewajarnya bergantung pada alamat PHP-FPM dikonfigurasikan untuk mendengar, dalam fail konfigurasi kolam. Konfigurasi lalai menunjuk ke soket domain Unix.

hulu php-fpm server unix:/run/php-fpm/www.kaus kaki;  
Konfigurasikan PHP Hulu Pelayan di Nginx

Dan di fail blok pelayan laman web anda, cukup tetapkan fastcgi_pass parameter seperti yang ditunjukkan.

fastcgi_pass php-fpm; 
Konfigurasikan Nginx ke PHP-FPM Server Hulu

Setelah membuat perubahan pada PHP-FPM dan Nginx konfigurasi, periksa sintaks konfigurasi mereka untuk ketepatan seperti berikut.

------------- Di Debian dan Ubuntu ------------- $ sudo php -fpm -t $ sudo nginx -t ------------- Di Centos/Rhel dan Fedora ------------- # php -fpm -t # nginx -t 

Walaupun output arahan menunjukkan fail konfigurasi utama sahaja, semua fail konfigurasi lain dimasukkan dan diperiksa juga.

Semak konfigurasi Nginx dan PHP-FPM

Seterusnya, anda perlu memulakan semula kedua -dua perkhidmatan untuk menerapkan perubahan, menggunakan arahan SystemCTL.

------------- Di Debian dan Ubuntu ------------- $ sudo Systemctl Restart Nginx $ Sudo Systemctl Restart Php7.4-fpm ------------- Di Centos/Rhel dan Fedora ------------- # Systemctl Restart Nginx # Systemctl Restart PHP-FPM 

Sekiranya anda mendapat sebarang kesilapan, anda boleh menyemak Nginx dan PHP-FPM fail log menggunakan arahan kucing.

------------- Di Debian dan Ubuntu ------------- $ kucing/var/log/nginx/ralat.Log $ Cat/Var/Log/Php7.4-fpm.log ------------- Di Centos/Rhel dan Fedora ------------- $ kucing/var/log/nginx/ralat.Log $ Cat/Var/Log/PHP-FPM/www-rorror.log 

Itu sahaja yang kami ada untuk anda. Bahagian komen di bawah boleh digunakan untuk mengemukakan soalan. Untuk maklumat lanjut, lihat dokumentasi NGINX dan dokumentasi PHP-FPM.