Apa perbedaan antara menggunakan upstream dan lokasi untuk php-fpm?


18

Saya telah mencari-cari tetapi tidak dapat menemukan jawaban langsung, jika seseorang dapat menjelaskan ini, akan sangat dihargai, terima kasih!

location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

ATAU DAN?

upstream php {
    server         unix:/run/php-fpm/php-fpm.sock;
}

Terima kasih!

Jawaban:


9

Saya telah menemukan bahwa, nginxsetidaknya untuk 1.6.2, sintaks yang berfungsi untuk saya untuk blok lokasi adalah:

location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   php;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

yaitu: seseorang tidak boleh menentukan http://protokol sebelum mereferensikan backend php. The http://phpsintaks untuk digunakan dengan proxy_passinstruksi, tidak fastcgi_pass.


23

location digunakan untuk mencocokkan ekspresi dan membuat aturan untuk mereka.

upstream mendefinisikan server yang dapat dirujuk.

Dalam contoh Anda ini berarti jika Anda ingin mendapatkan yang setara untuk

location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

, kamu akan membutuhkan

upstream php {
    server         unix:/run/php-fpm/php-fpm.sock;
}
location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   php;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

Keuntungan dari blok upstream adalah Anda dapat mengkonfigurasi lebih dari satu server / port / layanan sebagai upstream dan mendistribusikan lalu lintas pada mereka, misalnya seperti ini:

upstream php {
    server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
    server 192.68.1.2     weight=5;
    server         unix:/run/php-fpm/php-fpm.sock;
}

Anda dapat menemukan informasi lebih lanjut tentang ini di dokumentasi nginx:

http://nginx.org/en/docs/http/ngx_http_upstream_module.html


Apakah Anda perlu ip_hash untuk PHP? Bagaimana dengan keepalive?
CMCDragonkai

1
Seharusnya fastcgi_pass php;sebaliknya
rhgb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.