Řešení 1:
location
se používá k párování výrazů a vytváření pravidel pro ně.
upstream
definuje servery, na které lze odkazovat.
Ve vašem příkladu to znamená, pokud chcete získat ekvivalent pro
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
, budete potřebovat
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;
}
Výhodou upstream bloku je, že můžete nakonfigurovat více než jeden server/port/službu jako upstream a distribuovat na ně provoz, například takto:
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;
}
Více informací o tom můžete najít v dokumentaci nginx:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Řešení 2:
Zjistil jsem, že k nginx
Alespoň 1.6.2, pracovní syntaxe pro blok umístění je pro mě:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi.conf;
}
to znamená:nemělo by se uvádět http://
protokol před odkazem na backend php. http://php
syntaxe se použije s proxy_pass
instrukce, nikoli fastcgi_pass
.