Nginx
Nginx 重寫以刪除文件夾名稱
我想從文件夾 /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,這可能是您想要避免的。