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!