我一直在寻找,但找不到一个直接的答案,如果有人可以请澄清这一点,将不胜感激,谢谢!
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更多的信息:
我发现,至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 。