如何为Spring Boot应用程序配置嵌入式Tomcat虚拟主机?

3
我在我的CentOS VPS上有多个域名(通过虚拟主机配置在Apache HTTP服务器上运行的域名)。同时,我想添加我的新域名,但是该域名将路由到我的Spring Boot应用程序(应用程序是一个JAR文件,也在内嵌的Tomcat中)。我找不到任何针对内嵌Tomcat特定域名和端口的配置。
独立的Tomcat可以通过server.xml文件进行配置,就像这个图片like this image所示。
此外,这个简短的教程展示了独立Tomcat的配置Tomcat Virtual Host Configuration
但是我如何为内嵌Tomcat进行这样的配置呢?有什么建议吗?

大多数配置都可以在application.properties中找到,它会内部更新server.xml。要更改的属性在thttp://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html中给出(所有带有server.tomcat的属性都与此相关)。 - Nagappan
谢谢您的回答。我已经阅读了那个页面,也阅读了常见的application.properties [链接](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties),但无法解决我的问题。我在stackoverflow上找到了这个问题[链接](https://dev59.com/CmAg5IYBdhLWcg3wI4AR),该问题的答案是server.address = <your_ip>,但我有一个IP和多个域名在同一台机器上。 - cekil
多个域名是什么意思我不太明白。它是指多个主机吗?如果您能提供一些示例,那么回答会更有帮助。 - Nagappan
我的意思是,我有一个虚拟专用服务器。在这个服务器上,我有www.burakkayacan.comtest.burakkayacan.com域名。Apache HTTP服务器接收该域名请求,并通过Apache HTTP虚拟主机配置路由到不同的文件夹。同时,在VPS上我还有一个Spring Boot应用程序在特定文件夹中。当我在浏览器中输入blog.burakkayacan.com时,该请求应路由到Spring Boot应用程序。我可以进行配置。但是单独的Tomcat虚拟主机配置在server.xml文件中添加主机节点(http://i.stack.imgur.com/SXsA7.jpg),但无法为Spring Boot实现? - cekil
2个回答

2

使用Spring Boot嵌入式Tomcat,您每个servlet容器只托管一个应用程序。因此,我不认为Tomcat的虚拟主机概念有任何意义。

如果您必须在共享Tomcat实例上托管应用程序,请构建不带嵌入式容器的WAR。


感谢您的回答。在我的VPS上有一个Apache HTTP服务器和三个域名。我通过虚拟主机配置文件来配置这些域名。我还有一个博客网站,它是一个Spring Boot应用程序。但为什么我不能通过application.properties文件或EmbeddedServletContainerAutoConfiguration类的规范来配置应用程序以接收blog.burakkayacan.com?我的最新解决方案将是war文件,但Spring文档和网络研讨会建议使用jar文件进行部署。 - cekil
正如我所提到的,嵌入式Tomcat适用于一应用一个Tomcat实例的方法。如果您正在使用共享的Tomcat实例,则必须构建WAR而不是fat JAR。 - luboskrnac

0

这要看情况而定。有两种方法可以部署你的 project.jar

第一种方式:你可以使用“Apache Web服务器”及其自带的“mod_proxy”,以便为你想要的每个Spring Web应用程序提供服务,每个应用程序都在一个特定的端口上配置了“php-fpm”,并定义了代理来路由请求从/到你的基于名称的虚拟主机配置。

现在,使用Spring Boot 2.5,你只需要在你的application.properties文件中设置属性server.port,并根据需要使用mod_proxy指令即可。如果你正在使用配置文件,你可以将一个端口设置为devprodtest或任何你需要的属性文件。

另一种方法:你可以使用Apache Web服务器“mod_jk”桥接模块为你的虚拟主机配置多个负载均衡器。

选择你的道路,年轻的绝地武士;)

这个回复显然不是给7年后的OP,而是给其他使用像Google这样的任何网络搜索引擎的人。他们会来到这里并看到“某些事情是不可能的”。这不是真的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接