SslSocketConnector迁移至Compute Engine后出现Cannot assign requested address报错
问题根源
Compute Engine 实例的公网IP属于谷歌云前端NAT映射地址,并未直接配置在实例操作系统的本地网卡上,你的代码直接绑定www.mydomain.com解析到的公网IP,操作系统无法找到对应本地网卡地址,因此抛出绑定异常。
解决步骤
- 修改代码中连接器的host配置:将
connector.setHost(www.mydomain.com);改为绑定0.0.0.0,监听实例所有可用网卡,修改后代码示例:
SslSocketConnector connector = new SslSocketConnector(); connector.setKeystore(certificatePath); connector.setPassword(certificatePassword); connector.setKeyPassword(certificatePassword); connector.setTruststore(certificatePath); connector.setTrustPassword(certificatePassword); connector.setPort(8805); connector.setHost("0.0.0.0");
如果仅需要内网访问服务,也可以替换为实例的私网IP地址。
- 配置谷歌云防火墙规则:在VPC防火墙控制台添加入方向规则,放行8805端口的TCP流量,源地址可临时设置为
0.0.0.0/0用于测试,后续可根据需要收缩权限范围。 - 检查实例本地防火墙:确认实例操作系统内的防火墙(如iptables、ufw、firewalld)已放行8805端口的入站请求。
- 排查端口占用:服务启动前执行命令
netstat -tulpn | grep 8805,确认8805端口未被其他进程占用,若已被占用可终止对应进程或修改服务监听端口。
验证方法
服务启动成功后,先在实例本地执行curl 127.0.0.1:8805确认服务正常响应,再通过公网IP或域名访问服务验证连通性。
内容的提问来源于stack exchange,提问作者Tomas Marik
相关产品推荐
相关产品推荐

