2016-05-04 18 views
0

私の目的はアップストリームを設定できるようにするため、プロジェクト/仮想ホストごとに必要なPHPバージョンを使用できます。nginx仮想ホストごとにアップストリーム変数を設定する

は、私が試した:

upstream php { 
    server php7-fpm-alpine:9000; 
} 
server { 
    listen  80; 
    server_name somesite.com; 
    root   /www/somesite.com; 

    include /etc/nginx/nginx-wp-common.conf; 
} 

のnginx-WP-common.confマイセットアップが1つのサイトのために働くfastcgi_pass php;

持っていますが、文句を言う、私は他のドメインのnginxのためのより多くの仮想ホストの追加を開始後:

duplicate upstream "php" 

わかりましたが、私の目的は上流とDRYの原則を選択する際のモジュール性です。

+0

'fastcgi_pass php;'は各サーバの異なる上流を​​指しますか? –

+0

@AlexeyTenはい、それが私の意図です。 –

答えて

1

アップストリームの名前(php)がPHPの各バージョンで同じである必要がある場合は、アップストリームブロックを外部ファイルに移動し、必要なファイルをインクルードする必要があります。

はexmaple:

/etc/nginx/upstream-php7.confファイルへ

移動

upstream php { 
    server php7-fpm-alpine:9000; 
} 

とは、あなたの/ etc/nginxの/ nginxの-wp-でそのファイルを含めますcommon.conf

(別名アップストリームphp7 {...}など)を別々に作成し、fastcgi_passの希望するものを使用する

EDITED:

別のオプション:

が異なる上流のブロックを定義:

upstream php5 { 
    server php5-fpm-alpine:9000; 
} 
upstream php7 { 
    server php7-fpm-alpine:9000; 
} 

は、サーバーのブロック(複数可)を変更し、異なるバーチャルホストのための上流$

server { 
    listen  80; 
    server_name somesite.com; 
    root   /www/somesite.com; 
    set $upstream php7; 

    include /etc/nginx/nginx-wp-common.conf; 
} 
server { 
    listen  80; 
    server_name othersite.com; 
    root   /www/othersite.com; 
    set $upstream php5; 

    include /etc/nginx/nginx-wp-common.conf; 
} 
に異なる値を設定します

nginx-wp-common.confを変更してください

fastcgi_pass $upstream; 
+0

私は仮想ホストごとに異なる上流を​​持っているようにしています。提案されたソリューションのどれもこれを助けません。 –

+1

私は自分の答えを編集しました。私はこれがあなたの問題を解決するはずだと思います。 – hzei

+0

アップストリームファイルを00-my-upstreams.confのように名前を変更して、常にclasical/etc/nginx/sites-enabled設定を使用して最初にロードされるようにしなければならないことを覚えておいてください。 – PerroVerd

関連する問題