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
.