Jaka jest różnica między używaniem pobierania i lokalizacji dla php-fpm?

18

Rozglądałem się wokół, ale nie mogłem znaleźć prostej odpowiedzi, jeśli ktoś mógłby to wyjaśnić, byłbym bardzo wdzięczny, dzięki!

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

ALBO I?

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

Dzięki!

Van Nguyen
źródło

Odpowiedzi:

9

nginxPrzekonałem się, że przynajmniej od wersji 1.6.2 działającą składnią dla mnie dla bloku lokalizacji jest:

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

to znaczy: nie należy określać http://protokołu przed odwołaniem się do backendu php. http://phpSkładnia ma być używany z proxy_passinstrukcją, nie fastcgi_pass.

Weeblr
źródło
23

location służy do dopasowywania wyrażeń i tworzenia dla nich reguł.

upstream definiuje serwery, do których można się odwoływać.

W twoim przykładzie oznacza to, że chcesz uzyskać ekwiwalent za

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

, będziesz potrzebować

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

Zaletą bloku nadrzędnego jest to, że można skonfigurować więcej niż jeden serwer / port / usługę jako nadrzędny i rozdzielić na nich ruch, na przykład:

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

Więcej informacji na ten temat można znaleźć w dokumentacji nginx:

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

etagenklo
źródło
Czy używasz ip_hash dla PHP? Co z utrzymaniem aktywności?
CMCDragonkai
1
Powinno być fastcgi_pass php;zamiast tego
rhgb