我今天刚收到我的第一个 VPS,想在上面安装一个 nginx + PHP + MariaDB 设置。而且,好吧,我确实做到了,但是我在配置它时遇到了问题。
让 nginx 提供静态 .html 文件没有问题,尝试提供动态 PHP 文件但只显示公共“502 Bad Gateway”消息。我对 nginx 日志文件的解释表明 nginx 和 PHP-FPM 之间存在通信错误,但我是一个该死的新手,所以这可能是非常错误的。
php5-fpm.log:
[05-Aug-2012 21:50:10] NOTICE: fpm is running, pid 10982
[05-Aug-2012 21:50:10] NOTICE: ready to handle connections
nginx 的 error.log 的一部分:
2012/08/06 00:13:20 [error] 11419#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:21 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:22 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
2012/08/06 00:23:23 [error] 11419#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: REMOVED, server: lo$
我已经查看了大多数配置,但我一开始几乎保留了所有默认设置。PHP-FPM 仍然在端口 9000 上运行,nginx 应该查询的端口......
这是一个远景(因为我不知道你的发行版、版本或配置),但如果我没记错的话,最近 PHP-FPM 的默认配置(至少在 Debian 上是这样)改为基于文件的通信(UNIX 套接字)的TCP。
您可以通过检查 PHP-FPM 的配置文件或使用
lsof
等来验证这一点netstat -a
。编辑:刚刚检查了我的设置。我在这里使用 Apache,所以这不会直接帮助,但 FastCGI 配置行显示:
如您所见,它指的是套接字文件,即
/var/run/php5-fpm.sock
.