2015-10-02 4 views
3

Я бегу приложения PHP на Nginx с HHVM в качестве основного и PHP-FPM в качестве резервногоHHVM запасной вариант для PHP-FPM

Это мой конфиг Nginx относительно обработки PHP

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 service.Normally, что бы передать запрос на 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 

ли я делаю что-то неправильно здесь

ответ

5

Это выполнимо гораздо проще.

Сначала определите восходящий поток с 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; 
    } 

} 
+0

На самом деле, я попытался это один too.I знает, что я написал избыточно, но так как эта конфигурация не работает, я написал conf, но даже это порождает ошибку. – 5ud0

+0

Я нашел его, По-видимому, согласно официальным инструкциям, я включил hhvm.conf в nginx-vhost, который, кажется, переопределяет php-fpm и пытается подключиться к нему! Удаление этой проблемы – 5ud0

+0

@ 5ud0 У меня есть серверы, работающие с этой конфигурацией, она работает безупречно –