อะไรคือความแตกต่างระหว่างการใช้อัปสตรีมและตำแหน่งสำหรับ php-fpm


18

ฉันค้นหามาแล้ว แต่ไม่พบคำตอบที่ตรงถ้าใครซักคนโปรดอธิบายให้เข้าใจก็จะได้รับการชื่นชมอย่างมากขอบคุณ!

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

และ / หรือ?

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

ขอบคุณ!

คำตอบ:


9

ฉันพบว่าnginxอย่างน้อย 1.6.2 ไวยากรณ์การทำงานสำหรับฉันสำหรับบล็อกตำแหน่งคือ:

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

นั่นคือ: หนึ่งไม่ควรระบุhttp://โปรโตคอลก่อนที่จะอ้างอิงแบ็กเอนด์ php http://phpไวยากรณ์ที่จะใช้กับการเรียนการสอนไม่ได้proxy_passfastcgi_pass


23

location ใช้เพื่อจับคู่นิพจน์และสร้างกฎสำหรับพวกเขา

upstream กำหนดเซิร์ฟเวอร์ที่สามารถอ้างอิงได้

ในตัวอย่างของคุณนี่หมายความว่าถ้าคุณต้องการที่จะได้รับเทียบเท่า

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

คุณจะต้อง

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

ประโยชน์ของบล็อกอัปสตรีมคือคุณสามารถกำหนดค่าเซิร์ฟเวอร์ / พอร์ต / บริการมากกว่าหนึ่งรายการเป็นอัปสตรีมและแจกจ่ายทราฟฟิกบนบล็อกตัวอย่างเช่น:

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

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในเอกสารประกอบของ nginx:

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


คุณ nee ip_hash สำหรับ PHP หรือไม่ สิ่งที่เกี่ยวกับ keepalive
CMCDragonkai

1
มันควรจะfastcgi_pass php;เป็น
rhgb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.