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/* 

答案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在浏览器地址栏中看到一个,这可能是您想要避免的。

相关内容