今天要发布微信小程序,所以将腾讯云服务器的dns解析解析到IP,并申请了证书,配置上springboot ,然后发布到服务器,
通过域名加端口可以访问到项目,可是对接的第三方物联网平台ontnet无法访问到了,但是本地又可以访问到,不知道是什么情况,后面也改成了https,还是请求超时,然后也配置了resttemplate的连接时间超时时间,和第三方平台有关嘛,证书不让我通过,防火墙全部打开了,
本地我用postman请求我的本地https IP 端口 可以请求到https的物联网平台,但是请求服务器的https 域名端口报错连接超时
ping 域名的话会收到一条字节信息就不动了,程序有这样一条警告 Cannot get DNS TTL settings from sun.net.InetAddressCachePolicy class
我用一个https的tomcat 项目已经配置好的https域名能用的项目请求我的服务器IP端口加请求路径也是这样
ubuntu服务器配置dns域名后无法访问其他域名
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
27条回答 默认 最新
- 笑面虎 2024-05-14 19:39关注
以下内容由CHATGPT及笑面虎共同生成、有用望采纳:
【您想要解决的问题】: 您提问的目的是解决在Ubuntu服务器上配置了DNS域名后,您的Spring Boot项目可以通过域名加端口访问,但是无法通过第三方物联网平台进行访问的问题。同时,您提到即使切换到HTTPS协议,问题依旧存在,表现为请求超时。
【图片内容】: 您上传的图片显示了服务器日志中的一个异常信息,具体内容是:
- 时间戳:2024-05-14T19:28:46.755+08:00
- 日志级别:INFO
- 消息:dispatcherServlet完成了初始化
- 时间戳:2024-05-14T19:28:57.071+08:00
- 异常信息:在dispatcherServlet的service()方法中抛出了异常,请求处理失败,原因是
ResourceAccessException
,具体是I/O error on GET request for "https://iot-api.heclouds.com/device/detail"
,连接超时。 - 异常的根本原因是
java.net.SocketTimeoutException: Connect timed out
,这表明在尝试连接到第三方物联网平台时,连接请求超时。
【问题出现原因】: 根据您提供的信息和图片内容,问题可能出现的原因包括:
- 网络配置问题:服务器的网络配置可能导致无法访问第三方物联网平台。
- DNS解析问题:虽然您已经将DNS解析到了服务器IP,但可能存在缓存或其他DNS解析问题。
- 防火墙设置:尽管您提到防火墙已经全部打开,但可能存在某些特定的防火墙规则或安全组设置阻止了与物联网平台的通信。
- 证书问题:如果物联网平台需要特定的证书进行通信,证书配置不当可能导致连接失败。
- 服务器配置:Spring Boot应用或其底层的Java虚拟机可能配置不当,例如
RestTemplate
的连接超时设置。
【问题解决方案】:
- 检查网络配置:确保服务器的网络配置允许与物联网平台的通信。
- 验证DNS解析:检查DNS解析是否正确,清除可能的DNS缓存。
- 检查防火墙设置:确保没有防火墙规则阻止服务器与物联网平台的通信。
- 证书配置:如果物联网平台需要证书,确保证书正确安装并且Spring Boot应用正确配置了证书。
- 调整超时设置:在Spring Boot应用中调整
RestTemplate
的连接超时和读取超时设置,确保它们足够长以完成通信。 - 日志分析:进一步分析服务器日志,查找任何可能的错误信息或警告,这可能提供问题的线索。
【提供代码】: 由于问题可能与网络配置和服务器设置有关,而不是特定的代码问题,因此没有直接的代码解决方案。但是,以下是调整Spring Boot应用中
RestTemplate
超时设置的一个示例:import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; public class CustomRestTemplate extends RestTemplate { public CustomRestTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(5000); // 设置连接超时时间(毫秒) factory.setReadTimeout(5000); // 设置读取超时时间(毫秒) this.setRequestFactory(factory); } }
【代码运行方式】: 您需要将上述代码集成到您的Spring Boot应用中,并使用
CustomRestTemplate
代替默认的RestTemplate
。【代码预期运行结果】: 如果超时是导致问题的原因,调整超时设置后,应用应该能够成功地与物联网平台通信。
【推荐相关链接】:
- Spring Boot官方文档
- Ubuntu网络配置指南
- DNS解析和故障排除
- 防火墙设置和安全组(以AWS为例,如果您使用的是其他云服务提供商,请查找相应的文档)
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现
- ¥15 图像分割、图像边缘提取
- ¥15 sqlserver执行存储过程报错
- ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
- ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
- ¥100 matlab2009 32位一直初始化
- ¥15 Expected type 'str | PathLike[str]…… bytes' instead
- ¥15 三极管电路求解,已知电阻电压和三级关放大倍数