首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache代理配置(webapp资源URL截断)

Apache代理配置(webapp资源URL截断)
EN

Server Fault用户
提问于 2020-12-09 10:20:35
回答 1查看 301关注 0票数 1

我试图在Apache服务器中设置一个代理,但是我有一个关于URL构建的问题,因为路径的URL部分丢失了。举个例子:

http://server/webapp/style.css (预期)

http://server/style.css (实数)

我在web上公开了一台服务器(我将称之为前端服务器),以及内部网络中的另一台服务器(后端服务器)(无法从web访问),其中有我想在外部代理的web应用程序。我尝试了一些方法,主要问题是在代理中,URL不是以正确的方式(re)-written,服务器或浏览器遗漏了一部分。

我试过的是:

代码语言:javascript
复制
ProxyPass /webapp http://backendserver
ProxyPassReverse /webapp http://backendserver

浏览器中应用程序的URL是正确的http://frontendserver/webapp;index.html是可见的,但所有附加的资源(js、套接字、css等等)都是可见的。因为它们的URL是http://frontendserver/style.css而不是http://frontendserver/webapp/style.css,所以会丢失。

这是正确的方法来正确设置这种类型的代理吗?

我也用Apache重写模块尝试过其他的解决方案,但是我没有达到一个好的结果,也许有人有一个很好的建议来解决这个问题。

谢谢

EN

回答 1

Server Fault用户

发布于 2020-12-21 15:21:36

ProxyPass会改变URL的应答方式,但它不会重写index.html中的URL。要解决这个问题,您的选项是:

  1. 重写index.html以使用相对链接(css/style.css)而不是绝对链接(/css/style.css),因此它们仍然可以从不同的URL库工作。
  2. 使用国防部_代理_html重写传出的HTML、Javascript和CSS内容中的链接。类似于: ProxyHTMLEnable On ProxyHTMLLinks a href .ProxyHTMLURLMap http://frontendserver/ http://frontendserver/webapp/

第一种解决方案是最好的,如果您可以轻松做到这一点,因为它使您的内容可移植,而且更可靠。

如果内容中的所有URL都是静态的,第二种解决方案可能对您有效。但是mod_proxy_html对动态计算的URL一无所知--例如,如果在Javascript中计算URL。因此,在这种情况下,除非您还修改代码以使用动态URL库,否则它将失败。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1045546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档