HHVM回退到PHP-FPM
我正在nginx上运行一个PHP应用程序,HHVM作为主应用程序,PHP-FPM作为备份 这是我关于php处理的nginx配置HHVM回退到PHP-FPM,php,nginx,hhvm,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)(/.+)$; fast
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\u服务器
就可以了,就好像它是唯一的后端一样,nginx处理故障转移工作,而不是您
fastcgi_pass fastcgi_server;
模块上游文档非常有启发性
总之,您的示例如下所示:
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;
}
}
事实上,我也试过这个。我知道我写的是多余的,但由于这个配置不起作用,我用那种方式写了这个配置,但甚至会抛出错误。我发现,显然,根据官方指示,我在nginx vhost中包含了hhvm.conf,它似乎覆盖了php fpm并试图连接到它!移除它解决了问题problem@5ud0我有使用此配置运行的生产服务器,它运行得非常完美,对我来说也是如此,但hhvm似乎比php fpm慢得多,我知道它最初有JIT预热。@5ud0是的,预热对hhvm很重要,我有一个脚本运行
seake-b-f urls.txt-v
,30秒后,速度大大提高。