HHVM + NGinx连接被拒绝

时间:2014-11-25 21:32:33

标签: nginx fastcgi hhvm

我正在尝试通过预构建的软件包在Debian 7上安装HHVM。我有另一台具有相同配置的服务器并且它正在工作但是在其中一台服务器中HHVM FastCGI拒绝连接

这是/var/log/nginx/error.log

2014/11/25 23:24:10 [error] 422#0: *39 connect() failed (111: Connection refused) while connecting to upstream, client: 213.128.95.22, server: , request: "GET /api/v2/checkaccess HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "77.75.35.140"

我确信HHVM守护程序正在工作并正在监听9000. port。

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
hhvm    12192 www-data   16u  IPv6 792971      0t0  TCP *:9000 (LISTEN)

但我也无法连接telnet

root@server:/home/itusozlukcom# telnet 127.0.0.1 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

我确信代码没有问题,因为相同的代码在另一台服务器上运行,而在此服务器中代码可以通过HHVM CLI运行。

HHVM error.log为空。

可能是什么问题?

2 个答案:

答案 0 :(得分:7)

我自己就意识到了这个问题。

HHVM的默认设置没有指定要监听的IP,只是监听ipv6地址。因为我可以用localhost连接但不能用127.0.0.1连接

通过hhvm.server.ip = 127.0.0.1指定IP解决了这个问题。

答案 1 :(得分:4)

当您在同一台服务器上运行Nginx和HHVM时,最好将(为了提高性能)连接到Unix套接字。

要允许套接字连接,请更改/etc/hhvm/server.ini

;hhvm.server.port = 9000    
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock

我注释掉了服务器端口,因为您可能不希望HHVM再次收听该端口。

在你的Nginx配置中,make fastcgi_pass使用你定义的套接字

fastcgi_pass unix:/var/run/hhvm/hhvm.sock;

重启Nginx和HHVM,可选择检查/var/run/hhvm/hhvm.sock是否真的存在,并试一试!