web-dev-qa-db-fra.com

Quelle est la différence entre utiliser en amont et l'emplacement pour php-fpm?

Je cherche autour de moi mais je ne pouvais pas trouver une réponse directe, si quelqu'un pouvait clarifier cela, seraient grandement apprécié, merci!

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

OU ET?

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

Merci!

19
Van Nguyen

J'ai trouvé cela, à partir de nginx 1.6.2 au moins, la syntaxe de travail pour moi pour le bloc d'emplacement est:

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

c'est-à-dire que cela ne devrait pas spécifier le http:// Protocole avant de référencer le backend PHP. Les http://php Syntaxe doit être utilisée avec le proxy_pass instruction, pas fastcgi_pass.

9
Weeblr

location est utilisé pour correspondre aux expressions et créer des règles pour eux.

upstream Définit les serveurs pouvant être référencés.

Dans votre exemple, cela signifie que si vous voulez obtenir un équivalent pour

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

, tu aurais besoin

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'avantage du bloc amont est que vous pouvez configurer plus d'un serveur/port/service comme en amont et distribuez le trafic sur eux, par exemple comme celui-ci:

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

Vous pouvez trouver plus d'informations à ce sujet dans la documentation NGinx:

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

24
etagenklo