掌握Spring Boot网络配置:server.address详解

在Spring Boot配置文件中,server.address用于指定应用绑定的网络接口地址。通过这个配置项,可以控制应用程序监听的IP地址,从而影响外部访问的权限和方式。

示例代码

以下是一个简单的示例,展示了如何在[application.yml](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\target\classes\application.yml)中配置server.address的不同值:

server:

port: 8089

address: 0.0.0.0 # 可替换为127.0.0.1、localhost等

配置详解

address: 0.0.0.0

表示应用程序将监听所有网络接口上的连接请求。这意味着可以通过本机的任何IP地址或主机名访问该服务,适用于需要从外部访问的场景。

// 当配置为0.0.0.0时,Spring Boot会绑定到所有可用的网络接口

@Bean

public WebServerFactoryCustomizer webServerFactoryCustomizer() {

return factory -> {

factory.setPort(8089); // 设置端口号

factory.setAddress(null); // null表示绑定到所有接口(即0.0.0.0)

};

}

address: 127.0.0.1 或 address: localhost

表示应用程序仅监听本地回环地址,只能通过本机访问,无法从其他机器访问。这通常用于开发环境,确保安全性。

// 当配置为127.0.0.1或localhost时,Spring Boot只会绑定到本地回环接口

@Bean

public WebServerFactoryCustomizer webServerFactoryCustomizer() {

return factory -> {

factory.setPort(8089); // 设置端口号

try {

factory.setAddress(InetAddress.getByName("127.0.0.1")); // 明确绑定到127.0.0.1

} catch (UnknownHostException e) {

throw new RuntimeException(e);

}

};

}

不配置server.address

如果不显式配置server.address,Spring Boot默认会使用0.0.0.0作为监听地址,除非有其他逻辑导致其选择不同的地址(例如某些安全策略或特定的部署环境)。

不同配置的区别总结

配置值描述外部访问能力0.0.0.0监听所有网络接口,允许通过任何IP地址或主机名访问支持外部访问127.0.0.1仅监听本地回环地址,只能通过本机访问不支持外部访问localhost同127.0.0.1,仅监听本地回环地址不支持外部访问不配置默认行为通常是监听所有网络接口(即0.0.0.0)支持外部访问结论

0.0.0.0:适用于生产环境或需要从外部访问的应用程序。127.0.0.1 或 localhost:适用于开发环境或需要限制访问的安全场景。不配置:默认行为通常与0.0.0.0相同,但具体行为可能受部署环境影响。

通过合理配置server.address,可以根据实际需求控制应用程序的网络访问权限,提升安全性和灵活性。