2017-08-09 13 views
1

APIのバージョン管理に複数のgitタグがあるLumen apiプロジェクトがあります。だから私はプロジェクトの複数のチェックアウトを展開する必要があります。Nginxでネストされたプロジェクトをどのように処理できますか?

サーバー上のフォルダ構造は次のようになります。

var 
    www 
    api-staging 
     master 
     v1 
      public 
      index.php 
      ... 
     v2 
      public 
      index.php 
      ... 
     lastest 
      public 
       index.php 
      ... 
     ... 

は、今私はURLは次のようになりますように、nginxの経由プロジェクトにサービスを提供したいと思います。

http://BRANCH.domain.tld/VERSION/たとえば、 http://master.domain.tld/lastest/

私はregexpでたくさん試しましたが、実際には何もしませんでした。あなたが私を助けてくれることを願っています。

+0

ただ、各フォルダ構造のための異なる仮想ホストを設定します。 – Suraj

+0

@Surajこれを防止したいと思います。また、分枝の量では、これは不可能です。 –

答えて

3

正規表現server_nameを使用してBRANCHをキャプチャする必要があります。詳細については、this documentを参照してください。

ルートは正規表現locationalias文を必要とし、撮影しVERSION/publicを追加することによって構築されます。詳細については、this documentを参照してください。例えば

server { 
    ... 
    server_name ~^(?<branch>.+)\.domain\.tld$; 

    location ~ ^/(?<version>[^/]+)/(?<name>.*)$ { 

     alias /var/www/api-staging/$branch$version/public/$name; 

     if (!-e $request_filename) { rewrite^$version/index.php last; } 

     location ~ \.php$ { 
      if (!-f $request_filename) { return 404; } 
      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $request_filename; 
      ... 
     } 
    } 
} 
+0

バージョン番号がサーバーのURLドメインの代わりにリクエストヘッダー経由で渡された場合、これを行う方法はありますか? – ayip

+1

間違いなく。リクエストヘッダーの値は、 '$ http_'の変数群から利用できます。適切な変数は 'alias'ステートメント内で使用できます。 –

関連する問題