我一直在寻找,但找不到直接的答案,如果有人可以澄清这一点,将不胜感激,谢谢!
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;
}
谢谢!
答案1
location
用于匹配表达式并为其创建规则。
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 php;
fastcgi_index index.php;
include fastcgi.conf;
}
上游块的好处是您可以将多个服务器/端口/服务配置为上游并在其上分配流量,例如像这样:
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;
}
您可以在 nginx 文档中找到有关此内容的更多信息:
答案2
我发现,nginx
至少从 1.6.2 开始,位置块的工作语法对我来说是:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi.conf;
}
http://
即:在引用 php 后端之前不应指定协议。http://php
语法应与指令一起使用proxy_pass
,而不是fastcgi_pass
。