Lösung 1:
 location wird verwendet, um Ausdrücke abzugleichen und Regeln für sie zu erstellen.
 upstream definiert Server, auf die verwiesen werden kann.
In Ihrem Beispiel bedeutet dies, wenn Sie ein Äquivalent für
erhalten möchtenlocation ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}
, bräuchten Sie
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;
}
Der Vorteil des Upstream-Blocks besteht darin, dass Sie mehr als einen Server/Port/Dienst als Upstream konfigurieren und den Datenverkehr darauf verteilen können, zum Beispiel so:
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;
}
Weitere Informationen dazu finden Sie in der nginx-Dokumentation:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Lösung 2:
 Das habe ich seit nginx gefunden 1.6.2 mindestens, die Arbeitssyntax für mich für den Standortblock ist:
location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   php;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}
 das heißt:http:// sollte man nicht angeben Protokoll, bevor auf das PHP-Backend verwiesen wird. Der http://php Syntax ist mit dem proxy_pass zu verwenden Anweisung, nicht fastcgi_pass .