开发过程中有时需要获取项目的ip,也就是获取本机ip,如邮件激活验证等,网上有很多教程在window下或者linux中都成功获取了ip。参考https://blog.csdn.net/m0_37039484/article/details/89498197
然而在开发中,测试是没有问题的,项目上线后,在生产环境下获取的ip就可能错误。
这个我猜测是部署的服务器是一个集群,而不是单机,所以有时候获取到的是网关地址(本人试过)。就是说上面的方法适合单机linux。
怎么解决这个问题?难道真的要去问运维的同事他们是怎么部署的吗?。。。。。
解决方案很简单,我们把这件事交给容器去干(每次启动springboot项目的时候都会在控制台打印ip,是不是就明白了),加上
import java.net.InetAddress;
InetAddress address = InetAddress.getLocalHost();
return address.getHostAddress(); //返回IP地址
记得代码是加到controller、service中,不要封装成静态工具类,启动容器就能获取就能获取ip。封装成静态工具就有问题啦