问题描述:intellij idea 写的WebService,软件里面用Tool下的HttpClient测试可以通,或者网页测试也能通。但用外网地址或域名就不能访问了。
环境:Centos7+intellij idea 2018+tomcat6。服务器是在阿里云上的ECS主机,购买的域名也是阿里的。
搞清楚的问题如下:
1、如果是要用外网地址访问或者域名访问的时候,按下回车的那一秒开始,客户端程序发送的访问指令是面向外网的,它要先去找国内的主要几台域名服务器,域名服务器里面如果有解析记录,才会进行下一步访问。这个解析记录是在你购买域名的时候,你的运营商那边的后台,可以登陆进去指定好WWW记录和@记录的解析地址。如果你服务商那边的解析记录没问题,要互联网任何一个地方打上你的域名都可以访问到服务商解析的IP地址上面。(可以试一下ping你的域名能不能返回服务商给你的IP地址,如果有返回指定的地址,那就表明解析一定没问题。当然有些服务商有可能禁IP就另说了,一般都是可以ping的。)
下图是阿里万网的解析记录例图:
2、前面解析没问题的话,后面的问题就是你服务器上的问题了。服务器上面第一关是服务器所在的服务商给你的后台里要把对应WEBService的端口要打开。阿里云的云服务器,是在控制台的网络安全组里面修改的。
下图为阿里云的端口打开的示例:
3、如果服务器的服务商那边的端口你去后台开启之后,接下来就是服务器里面系统的问题。系统上面主要的问题就是防火墙,我在我的intellij idea 里面运行WEBService,可以内网访问,外网不能就是因为防火墙给挡住了。
另外要说一下的是intellij idea里面运行测试的Tomcat端口一般是8080,在软件运行之后,如果顺利的话外网就可以访问到了。一般情况如果WEBService开发好之后,会把服务打包后,再放到生产环境里面,有可能是Tomcat也可能不是,一样要遵循的是上面提到的三个地方是否正常。