HHVM-Fallback auf PHP-FPM

HHVM-Fallback auf PHP-FPM

Ich betreibe eine PHP-Anwendung auf nginx mit HHVM als Haupt- und PHP-FPM als Backup

Dies ist meine Konfiguration von Nginx bezüglich der PHP-Verarbeitung

  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;

  }

Um die Konfiguration zu testen, habe ich den hhvm-Dienst gestoppt. Normalerweise würde dieser die Anfrage an PHP-FPM weiterleiten und 200 zurückgeben, aber ich erhalte den folgenden 502-Fehler:

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

Mache ich hier etwas falsch

Antwort1

Ich habe festgestellt, dass hhvm hhvm.conf in die Standard-Vhost-Datei von nginx einbindet.

Das bedeutet, die Anfrage wird verarbeitet und der Fehler wird gesendet.

Ich habe die Konfiguration geändert zu

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;
  }

}

und entfernte die Zeile

include hhvm.conf

aus der Vhost-Datei.

Das hat das Problem gelöst!

verwandte Informationen