首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理中的转发主机名和路径

代理中的转发主机名和路径
EN

Stack Overflow用户
提问于 2018-03-28 20:37:41
回答 1查看 735关注 0票数 4

我有一个外部服务:

代码语言:javascript
复制
https://domainx.com/path/a/to/my/app

通过代理和and服务,它最终在tomcat服务器上的Spring (Data Rest)应用程序中,在以下位置公开:

代码语言:javascript
复制
http://mytomcatserver:8080/this/is/my/app

这个应用程序返回一个HAL-JSON响应,其中包含一个_links部分,指向它自己和其他资源。例如:

代码语言:javascript
复制
{
    "id": "a_resource_001",
    "_links": {
        "self": {
            "href": "http://mytomcatserver:8080/this/is/my/app/res/a_resource_001"
        }
    }
}

在消费方面,这个链接当然不会有任何意义。

解决了这个问题:在消费端,在某个地方添加了一个头:

代码语言:javascript
复制
X-Forwarded-Host=domainx.com

然后结果变成(自动感谢框架):

代码语言:javascript
复制
{
    "id": "a_resource_001",
    "_links": {
        "self": {
            "href": "https://domainx.com/this/is/my/app/res/a_resource_001"
        }
    }
}

链接得到了改进,但路径/ context-root仍然不匹配:

/path/a/to/my/app != /this/is/my/app

所以,我想,有没有X-Forwarded Path之类的东西。我的应用程序框架(Tomcat、Spring或Spring Data Rest)拾取的一些头文件,用于在JSON响应中构建url。但是没有,没有找到。

有没有人知道如何解决这些问题。在我看来,我不是第一个处理这种事情的人。

哦,是的,在这种情况下,使用相同的路径不是一个选项。(当然,如果我将应用程序的上下文根公开为/path/to/my/app,它就可以工作。在这种情况下不是一个选项)

我想在Tomcat/Spring中有一个解决方案,其中一些头文件可能会影响链接。但我也认为这可以在web服务器(apache)或代理设置中解决。

EN

回答 1

Stack Overflow用户

发布于 2019-03-01 17:26:39

我对此也有同样的问题。

当您使用spring应用程序时,最简单的方法是将上下文路径设置为与代理相同。

还可以选择获取x-forwarded-for信息。这些必须从代理服务器发送。

在应用程序端,您可以使用(在本例中为application.properties)

server.use-forward-headers=true server.servlet.context-path=/my/custom/context/path

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

https://stackoverflow.com/questions/49534765

复制
相关文章

相似问题

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