Sự khác biệt giữa việc sử dụng ngược dòng và vị trí cho php-fpm là gì?


18

Tôi đã tìm kiếm xung quanh nhưng không thể tìm thấy câu trả lời thẳng, nếu ai đó có thể vui lòng làm rõ điều này, sẽ được đánh giá rất cao, cảm ơn!

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

HOẶC VÀ?

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

Cảm ơn!

Câu trả lời:


9

Tôi đã thấy rằng, nginxít nhất là 1.6.2, cú pháp làm việc của tôi đối với khối vị trí là:

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

đó là: người ta không nên chỉ định http://giao thức trước khi tham chiếu phụ trợ php. Các http://phpcú pháp được sử dụng với sự proxy_passhướng dẫn, không phải fastcgi_pass.


23

location được sử dụng để khớp các biểu thức và tạo quy tắc cho chúng.

upstream định nghĩa các máy chủ có thể được tham chiếu đến.

Trong ví dụ của bạn, điều này có nghĩa là nếu bạn muốn có được một tương đương cho

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

, Bạn sẽ cần

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

Lợi ích của khối ngược dòng là bạn có thể định cấu hình nhiều máy chủ / cổng / dịch vụ làm thượng nguồn và phân phối lưu lượng truy cập trên chúng, ví dụ như sau:

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

Bạn có thể tìm thêm thông tin về điều này trong tài liệu nginx:

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


Bạn có thấy ip_hash cho PHP không? Còn giữ gìn?
CMCDragonkai

1
Nó nên được fastcgi_pass php;thay thế
rhgb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.