2017-08-25 2 views
1

我有一個網站,它是一個包含其他應用程序的應用程序。 在主應用程序中,我將使用iframe加載其他應用程序。 http://example.com 的其他應用的/應用程序路徑下送達:靜態應用程序的NGINX服務器配置

另外,應用程序是在發達

主要應用是在域根服務聚合物,所以有客戶端導航。我確信客戶端沒有使用/ apps路徑來正確擊中NGINX服務器,但這也意味着對於諸如http://example.com/view1之類的網址,它應該重定向到主應用程序的index.html。對於像http://example.com/apps/app-b/view1這樣的網址,它應該重定向到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; 
     } 
} 

通過上面的配置,我的主應用程序正確地重定向到index.html,例如/ view1路徑。

但我有一個子應用程序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時,您需要構建文件的完整路徑。目前,您只捕獲第二個路徑元素。

話雖如此,您實際上並不需要在這裏使用alias,因爲可以使用root指令代替。

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

查看this document瞭解詳情。

+0

它不工作,因爲位置/應用程序與文件系統上的文件夾名稱不匹配。我有類似/var/www/example.com/other-apps的東西。現在,我改變了其他應用程序,使其與您提出的建議一致(這是理所當然的)。 – florian

相關問題