Sintaks direktif Apache SetHandler saat mengkonfigurasi PHP FPM

Nov 29 2020

Saya telah mengikuti beberapa tutorial dan mengkonfigurasi Apache untuk menggunakan PHP FPM. Namun, saya tidak mengerti bagian mana dari SetHandlerjalur yang dilakukan dan berdasarkan beberapa eksperimen saya tampaknya berlebihan. Saya memiliki garis:

SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"

Ini berfungsi apakah |fcgi://localhostada atau tidak.

Di berbagai tempat, seperti konfigurasi Plesk, saya pernah melihat porsinya fcgi://localhostdiganti denganfcgi://127.0.0.1:9000

Apa tujuan dari |fcgi://localhost? Apakah itu mubazir dan dapatkah dihapus?

Apakah pipa, pemisah sock dan fcgi in sock|fcgidiartikan sebagai 'atau', artinya jika soket unix tidak ada, gunakan koneksi tcp sebagai gantinya?

Dalam konfigurasi kumpulan FPM saya, saya telah mencoba mengganti arahan mendengarkan dengan host dan port, juga hanya dengan port, tetapi saya tidak bisa membuatnya berfungsi. Bagaimana Anda mengkonfigurasi PHP FPM agar tersedia melalui TCP daripada soket unix? Saya tidak punya alasan untuk ingin melakukan ini saat ini, ini hanya untuk belajar.

Akhirnya. Apakah ini situs 'tumpukan' yang benar untuk menanyakan pertanyaan ini?


Edit untuk mengatakan saya telah menemukan sedikit dokumentasi dari Apache. Contoh terakhir di bagian contoh berbicara tentang menggunakan |fcgi://somethingdalam konteks memaksa permintaan proxy terbalik, tetapi saya benar-benar tidak mengerti ini.

Jawaban

4 Tommiie Dec 01 2020 at 15:10

Dokumentasi tersebut dengan jelas menyatakan mengapa Anda harus memasukkannya meskipun tidak wajib:

Untuk alasan kinerja, Anda mungkin ingin menentukan pekerja yang mewakili fcgi://backend yang sama . Manfaat dari formulir ini adalah memungkinkan pemetaan normal URI ke nama file terjadi di server, dan hasil sistem file lokal diteruskan ke backend. Ketika FastCGI dikonfigurasi dengan cara ini, server dapat menghitung PATH_INFO paling akurat.