如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?
Posted
技术标签:
【中文标题】如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?【英文标题】:how to configure Embedded Tomcat virtual host for Spring Boot Application? 【发布时间】:2016-02-10 00:59:12 【问题描述】:我的 centos vps 上有多个域(通过虚拟主机配置在 apache http 服务器上运行的域)。还有相同的 vps,我想添加我的新域,但该域将路由我的 spring boot 应用程序(应用程序是一个 jar 文件,也在嵌入式 tomcat 内)。我找不到嵌入式 tomcat 特定域和端口的任何配置。
独立的Tomcat我可以通过server.xml文件like this image进行配置
这个简短的教程还显示了 stadalone 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 相关的属性都与那) 感谢您的回答。我已经阅读了该页面,也阅读了常见的 application.properties [链接] (docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…),但无法解决我的问题。我还在stackoweflow [link] (***.com/questions/23946369/…) 上找到了这个问题,这个问题的答案是server.address=使用 Spring Boot 嵌入式 Tomcat,每个 servlet 容器仅托管一个应用程序。所以我认为 Tomcat 的虚拟主机概念完全没有意义。
如果您必须在共享的 Tomcat 实例上托管您的应用,只需构建没有嵌入式容器的 WAR。
【讨论】:
感谢您的回答。在我的 vps 上有一个 apache http 服务器和该服务器上的三个域。我通过虚拟主机 conf 文件配置了这些域。我还有一个博客网站,它是 Spring Boot 应用程序。但是为什么我不能通过 application.properties 文件或 EmbeddedServletContainerAutoConfiguration 类的规范进行配置,例如该应用程序将收到 blog.burakkayacan.com ?我最新的解决方案将是战争文件,但春季文档和网络研讨会建议制作 jar 文件进行部署。 正如我所提到的,嵌入式 tomcat 用于 1 app 1 tomcat 实例方法。如果您使用的是共享 Tomcat 实例,则必须构建 WAR 而不是胖 JAR。【参考方案2】:这取决于。 2 种方法来部署你的 project.jar
:
第一种方式:您可以使用“apache web 服务器”和他自己的“mod_proxy”,以便为您想要的任意数量的 Spring webapps 提供服务,每个应用程序都在配置有“php-”的特定端口上fpm”并定义了一个代理来路由来自/到基于名称的 VirtualHost 配置的请求。
如今,使用 Spring Boot 2.5,您所要做的就是在您的 application.properties
文件中设置属性 server.port
,并与 mod_proxy
指令相应地使用它。
如果您使用配置文件,您可以将一个端口设置为dev
或prod
或test
或任何您需要的属性文件。
另一种方法:您也可以使用 apache Web 服务器“mod_jk”桥接模块为您的虚拟主机配置多个负载平衡器。
选择你的道路,年轻的绝地;)
这个回应当然不是针对 7 年后的 OP,而是针对其他使用任何网络搜索引擎(如 Google)的人。他们会来到这里,看到“有些事情是不可能的”。这不是真的。
【讨论】:
以上是关于如何为 Spring Boot 应用程序配置嵌入式 Tomcat 虚拟主机?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?
如何为具有 Spring Security 配置的 Spring Boot API 编写单元测试