使用上游和位置为php-fpm有什么区别?

我一直在寻找,但找不到一个直接的答案,如果有人可以请澄清这一点,将不胜感激,谢谢!

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

OR / AND?

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

谢谢!

location用于匹配expression式并为其创build规则

upstream定义了可以引用的服务器。

在你的例子中,这意味着如果你想获得一个等价物

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

,你需要

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

上游模块的好处是可以将多个服务器/端口/服务configuration为上游,并将stream量分配给它们,例如:

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

你可以在这里find更多的信息:

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

我发现,至less在nginx 1.6.2中,位置块的工作语法是:

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

那就是:在引用php后端之前,不应该指定http://协议。 http://php语法将与proxy_pass指令一起使用,而不是fastcgi_pass