2017-08-25 38 views
1

私は他のアプリを含むアプリです。 メインアプリでは、他のアプリをiframeで読み込みます。 http://example.com 他のアプリは/がアプリのパスの下で提供されています:http://example.com/apps/app-b 静的アプリのNGINXサーバ設定

  • http://example.com/apps/app-a
  • はまた、アプリケーションが開発される

    メインアプリは、ドメインのルートで提供していますポリマーのように、クライアント側のナビゲーションがあります。私は/ appsのパスがNGINXサーバーを正しくヒットするためにクライアント側で使用されていないことを確認しますが、それはまた、http://example.com/view1のようなURLの場合、メインアプリケーションのindex.htmlにリダイレクトする必要があります。 http://example.com/apps/app-b/view1のようなURLの場合は、app-bのindex.htmlにリダイレクトする必要があります。

    私は静的なアプリケーションを提供するためにNGINXを設定しようとしています。

    server { 
         listen 80; 
         server_name example.com; 
    
         root /var/www/example.com/main-app; 
         index index.html; 
    
         try_files $uri $uri/index.html /index.html; 
    
         location ~ /apps/([a-z-]+) { 
           alias /var/www/example.com/apps/$1; 
         } 
    } 
    

    上記の設定では、たとえば、/ view1パスのindex.htmlへの正しいリダイレクトを処理するメインアプリケーションがあります。

    しかし、サブアプリケーションでは403の禁止エラーがあります。 "/var/www/example.com/apps/app-b" の

    ディレクトリインデックス禁止され、 クライアント:127.0.0.1、サーバー:example.com、要求:「GET /アプリケーション/ APP- B/

    ノー成功(無限リダイレクトが... /index.html/index.html/index.htmlにつながる)と他の構成を試してみた。

    私は、ファイルシステムについての確信していますすべてのディレクトリが755、ファイルが644です。

    私はなぜそれがtであるのか分かりませんディレクトリ索引を作成しようとしています。 何か助けていただければ幸いです。

答えて

0

aliasを正規表現locationと組み合わせて使用​​する場合、ファイルへのパス全体を構築する必要があります。現在、2番目のパス要素のみをキャプチャしています。

実際にを使用する必要はありませんが、代わりにディレクティブを使用することができます。

location /apps/ { 
    root /var/www/example.com; 
} 

詳細についてはthis documentを参照してください。

+0

場所/アプリケーションがファイルシステム上のフォルダ名と一致しないため、機能しませんでした。私は/var/www/example.com/other-appsのようなものを持っています。今のところ私は他のアプリをあなたが提案したもの(それは当然意味がある)で動作させるように変更しました。 – florian