Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot中的子域路由_Java_Spring_Spring Boot_Routing - Fatal编程技术网

Java Spring Boot中的子域路由

Java Spring Boot中的子域路由,java,spring,spring-boot,routing,Java,Spring,Spring Boot,Routing,基本上,我想要达到的是这样的效果 @GetMapping("domain.xyz") public String getHomepage() { [...] return "homepage/main.html"; } @GetMapping("something.domain.xyz") public String getSubdomainHomepage() { [...] return "homepage/subdomain.html"; } domai

基本上,我想要达到的是这样的效果

@GetMapping("domain.xyz")
public String getHomepage() {
    [...]
    return "homepage/main.html";
}

@GetMapping("something.domain.xyz")
public String getSubdomainHomepage() {
    [...]
    return "homepage/subdomain.html";
}
domain.xyzsomething.domain.xyz都指向同一台服务器,Spring应用程序在路由时会考虑子域,这样我可以在顶级域上有不同的内容,在子域上有不同的内容

这可以通过Spring Boot实现吗?

(注意:这不是100%测试,但可能会起作用)

我假设您的Spring Boot应用程序前面有一个Nginx或Apache

以Nginx为例,您可以使用proxy_pass指令,然后在转发到Spring Boot应用程序时,将的“主机”标题设置为“something.domain.xyz”或“domain.xyz”

因此,您可以增强主机头值的GetMappings到过滤器

@GetMapping(value ="/", headers="Host=domain.xyz")
public String getHomepage() {
    [...]
    return "homepage/main.html";
}

@GetMapping(value ="/", headers="Host=something.domain.xyz")
public String getSubdomainHomepage() {
    [...]
    return "homepage/subdomain.html";
}