Nginx

Nginx 重寫以刪除文件夾名稱

  • December 26, 2019

我想從文件夾 /magnoliaAuthor 中埠 8080 上執行的 tomcat 上的 maganolia CMS 安裝中刪除應用程序名稱,所以我嘗試了:

location / {

       proxy_pass http://127.0.0.1:8080/magnoliaAuthor/ ;
   }   

根頁面 (/) 打開,但我發現沒有圖片或 css 正在載入,因為頁面內的資產連結為:

/magnoliaAuthor/.resources/defaultMagnoliaLoginForm/login.css

所以他們被發送到tomcat作為

/magnoliaAuthor/magnoliaAuthor/.resources/defaultMagnoliaLoginForm/login.css

結果是 404

我嘗試了數十種重寫規則的組合,分成兩個位置,但沒有任何效果,如果我嘗試訪問 CSS,我會獲得首頁,或者應用程序名稱即使從代理目的地也被完全剝離,或者我進入無限重定向循環。

我目前的試驗是:

location / {

       rewrite ^(.*) /magnoliaAuthor/$1 break;
       proxy_pass http://127.0.0.1:8080/;
   }

基本上我想重寫:

/ -> /magnoliaAuthor/
/magnoliaAuthor/* -> /magnoliaAuthor/* 

理想的解決方案可能是部署/magnoliaAuthor在 Tomcat servlet 容器的根目錄。

否則,您可以使用重寫

location / {
   rewrite ^/magnoliaAuthor/(.*)$ /$1;
   proxy_pass http://127.0.0.1:8080/magnoliaAuthor/;
}

或兩個位置:

location / {
   proxy_pass http://127.0.0.1:8080/magnoliaAuthor/;
}
location /magnoliaAuthor/ {
   proxy_pass http://127.0.0.1:8080;
}

但是,如果您以這種方式進行操作,有時您仍然會/magnoliaAuthor在瀏覽器地址欄中看到 a,這可能是您想要避免的。

引用自:https://serverfault.com/questions/996807