Solución 1:
location
se utiliza para hacer coincidir expresiones y crear reglas para ellas.
upstream
define servidores a los que se puede hacer referencia.
En su ejemplo, esto significa que si desea obtener un equivalente para
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
, necesitarías
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;
}
El beneficio del bloque ascendente es que puede configurar más de un servidor/puerto/servicio como ascendente y distribuir el tráfico en ellos, por ejemplo, así:
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;
}
Puede encontrar más información sobre esto en la documentación de nginx:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Solución 2:
Descubrí que, a partir del nginx
1.6.2 al menos, la sintaxis de trabajo para mí para el bloque de ubicación es:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi.conf;
}
es decir:no se debe especificar el http://
antes de hacer referencia al backend de php. El http://php
la sintaxis debe usarse con el proxy_pass
instrucción, no fastcgi_pass
.