我想从在文件夹 /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/*
答案1
理想的解决方案可能是部署/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
在浏览器地址栏中看到一个,这可能是您想要避免的。