php - HHVM 回退到 PHP-FPM

标签 php nginx hhvm

<分区>

我在 nginx 上运行一个 PHP 应用程序,以 HHVM 为主,PHP-FPM 作为备份

这是我关于 php 处理的 nginx 配置

  location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;
    error_page 500 501 502 503 = @fallback;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    127.0.0.1:9000;
  }

  location @fallback {

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    unix:/var/run/php5-fpm.sock;

  }

为了测试配置,我停止了 hhvm 服务。通常这会将请求传递给 PHP-FPM 并且应该返回 200,但我收到如下 502 错误:

12296#0: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.34.235, server: stylep3.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host:localhost

我是不是做错了什么

最佳答案

这可以通过更简单的方式实现。

先用hhvm和php-fpm定义一个上游作为备份。

upstream fastcgi_server {
  server unix:/var/run/hhvm/hhvm.sock;
  server unix:/var/run/php-fpm-mysite.sock backup;
}

然后只需使用 fastcgi_server 就好像是唯一的后端,nginx 处理故障转移工作,而不是你。

fastcgi_pass fastcgi_server;

模块上游文档很有启发性。

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

总而言之,您的示例如下所示:

upstream php_backend {
  server 127.0.0.1:9000;
  server unix:/var/run/php5-fpm.sock backup;
}


server {
#
# other conf...
#

 location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    php_backend;
  }

}

关于php - HHVM 回退到 PHP-FPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913641/

相关文章:

php - 我如何将 php 集成到 html 表中

php - 通过PHP从MySQL到AS3检索信息

php - 根据其值从数组中删除元素?

linux - https ://example. com打开一个BIN文件供下载而不是页面内容

ubuntu - HHVM 3.0/Hack with Nginx 无法在 Ubuntu 13.10 上访问具有 770 权限的目录中的文件,同时具有组成员身份

php - 使用变量填充 SQL 数据库的字母数字问题

angular - 在特定的 Docker 容器环境中配置 Angular 2 Webpack App

javascript - 本地和生产环境中 Node 的行为

ruby-on-rails - Rails + (Phusion Passenger|Puma|Unicorn|Thin) + (Nginx|Apache) 如何协同工作?

hhvm - HHVM 能否运行 PHP7