如何配置集成了Spring的嵌入式Tomcat来监听除了localhost之外的IP地址的请求?
如何配置集成了Spring的嵌入式Tomcat来监听除了localhost之外的IP地址的请求?
我正在尝试运行Spring指南中的例子:构建RESTful Web服务。\n如果我打开localhost:8080/greeting,它可以正常工作。\n但是,如果我打开192.168.1.111:8080/greeting或140.112.134.22:8080/greeting,尽管这两个IP实际上是我电脑在互联网上使用的,但它无法建立连接。\n有人能告诉我如何配置Spring中的嵌入式Tomcat以接受除localhost(即127.0.0.1)之外的其他IP地址的HTTP请求吗?\n谢谢! 🙂
如何配置嵌入式Tomcat与Spring集成以侦听除localhost外的IP地址的请求?
问题的原因:默认情况下,Tomcat将绑定到0.0.0.0并侦听所有可用的地址。如果其他地址或端口不起作用(例如防火墙),则可能存在环境限制。
解决方法1:在application.properties文件中添加以下内容来指定Tomcat绑定的IP地址和端口:
server.address=<your_ip> server.port=<your_port>
替换<your_ip>
为要侦听的IP地址。可以在Spring Boot参考指南附录A中找到此和其他基本属性。
解决方法2:通过实现EmbeddedServletContainerCustomizer接口,在代码中创建自定义配置器来配置嵌入式Tomcat。可以在Spring Boot参考指南第55.5-55.8节中了解更多信息。
关于application.properties文件的位置,Spring Boot首先会尝试在JAR中查找,然后在类路径中查找,最后在运行应用程序的本地目录中查找。可以在文档/参考指南中找到更详细的说明。
此链接解释了Spring Boot属性的加载方式。可以通过命令行参数、外部yml或properties文件等多个位置传递配置信息。参考链接:docs.spring.io/spring-boot/docs/current/reference/html/…
在应用程序的src/main/resources目录下的application.properties文件中也可以指定IP地址和端口。更改了该文件中的端口后,重新启动Boot CLI,端口将生效。对于IP地址,还需要进一步尝试。
还可以在application.yml文件中通过server:和其中的address:指定IP地址。可以将其放在environments: / development:部分中。
我相信在Spring Boot 2中该属性仍然存在,并且仍然具有相同的功能。