Digital Ocean开放8080端口用于Spring Boot应用

2024-01-08

我想在我的设备上运行一个简单的 Spring Boot 应用程序Ubuntu 16.04.6 x64水滴。为了允许传入连接,我必须打开 8080 端口,因为这是 spring boot jar 中的嵌入式 tomcat 服务器将侦听连接的地方。

我用的是ufw allow 8080命令,现在我在我身上看到了这个水滴。

#ufw status
Status: active

To                         Action      From
--                         ------      ----
8080                       ALLOW       Anywhere
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
8080 (v6)                  ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)

我确保我的应用程序正在运行:

java -jar myservice.jar &

Netstat 报告有东西正在 8080 上监听:

#  netstat -aon
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0    XXX XX.XXX.XX.XXX:22        XX.XX.XXX.XX:64021      ESTABLISHED on (0.11/0/0)
tcp6       0      0 :::8080                 :::*                    LISTEN      off (0.00/0/0)
tcp6       0      0 :::22                   :::*                    LISTEN      off (0.00/0/0)

然而,当我在服务器外部进行 telnet 时,我得到:

telnet XX.XXX.XX.XXX 8080
Connecting To XX.XXX.XX.XXX...Could not open connection to the host, on port 8080: Connect failed

当我在服务器上进行 telnet 时,我得到:

# telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

在 Digital Ocean 的防火墙控制面板中,我进行了以下设置:

HTTP对服务器的请求只是挂起并且永远不会返回。从缺乏日志来看,它们甚至没有到达 tomcat 服务器。

我缺少什么?任何建议将不胜感激!

更新1:

对我的健康检查端点的本地(服务器内部)curl 请求也挂起。然而,我留下了更长的时间,我得到了这个应用程序日志:

2019-05-13 18:39:48.723  WARN 5873 --- [nio-8080-exec-2] o.a.c.util.SessionIdGeneratorBase        : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [214,287] milliseconds.

这解释了为什么请求被挂起,所以申请这篇文章的答案 https://stackoverflow.com/questions/28201794/slow-startup-on-tomcat-7-0-57-because-of-securerandom解决了这个问题。现在我可以访问服务器上的端点并且它正在响应。

然而在盒子之外,请求仍然没有到达服务器。 Telnet 外面仍然说Could not open connection to the host, on port 8080.


我不是 100% 确定原因,但数字海洋防火墙控制面板中的防火墙规则干扰了我的 Droplet 配置。

我已经从控制面板中删除了防火墙规则,现在 netstat 报告我的 8080 端口已打开,我终于能够从外部世界与服务器通信了。

#nmap -sS -O XX.XXX.XX.XXX

Starting Nmap 7.01 ( https://nmap.org ) at 2019-05-13 21:13 UTC
Nmap scan report for myservice (XX.XXX.XX.XXX)
Host is up (0.000024s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.8 - 3.19
Network Distance: 0 hops

另请检查UPDATE 1从这个问题中,因为它也引起了奇怪的混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Digital Ocean开放8080端口用于Spring Boot应用 的相关文章

  • android php 连接错误? (添加java代码)

    我试图从 android 应用程序获取位置 纬度 经度 并使用 php 插入数据库 然后提取 10m 半径内的数据 问题是 当我使用智能手机测试代码时 本地测试正常 数据未正确插入 表 usergps 有 3 列 名称 纬度 经度 在我测试
  • java中的易失性变量和内存屏障

    我有一个由链接节点组成的数据结构 您可以将其视为一个简单的 LinkedList 列表的每个节点都包含一些值和指向另一个节点的下一个字段 如果它是最后一个节点 则为 null 第一个节点作为根 它没有任何值 它只指向下一个节点 所有其他节点
  • 示例代码详细说明了 Ada 和 Java 之间的打字差异 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试想一个很好的例子来详细说明 Ada 的严格类型和 Java 的强类型之间的区别 有谁有一个很好的例子来使用基于整数的值来识别
  • 如何开始编写代码覆盖率工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找实际讨论的书籍或其他参考资料how用Java编写代码覆盖率工具 一些不同的技术或技巧 源代码与字节
  • 相当于休眠@Index? [复制]

    这个问题在这里已经有答案了 休眠注释 Index已弃用 但我找不到文档或任何如何交换它的提示 Entity class MyEntity Index name name org hibernate annotations Index pri
  • J2EE 过滤器:登录页面无法加载 css 或任何图像

    我已经访问过用于会话检查的 Java FilterImplementation https stackoverflow com questions 10973997 java filterimplementation for session
  • mysql-connector-java 升级到 8.0.11 更改了从数据库检索的所有日期值

    对于 Spring 项目 mysql connector java已迁移自6 0 6 to 8 0 11 因此与8 0 11问题如下 Caused by com mysql cj exceptions InvalidConnectionAt
  • 在android中获取可移动SD卡路径

    我如何在android中获取extSdcard路径 有 2 个存储 第一个是所有手机都有的外部存储 但第二个存储称为可移动存储 微型 SD 卡 我想在android中获取micro SD卡的路径 这怎么可能 从 KitKat 开始 您可以访
  • java 中操作系统的名称(不是“os.name”)

    我想知道如何获取 jvm 运行的操作系统类型 它也必须是 安全的 所以System getProperty os name 这并不是一个真正的选项 因为它可以通过 D 指令轻松规避 我所说的 安全 是指不容易被规避 它适用于桌面应用程序 用
  • JSF / 多巴哥 Facets 列表?

    有谁知道所有现有 JSF Tobago 方面的列表的良好链接 其中包含该方面的用途的解释 到目前为止 我知道 布局 和 确认 方面 但我还没有找到一个网站显示所有其他现有方面 提前致谢 通常 各个标签的文档都有其方面的描述 例如 http
  • 消除初始按键延迟

    当您在文本框中键入并按住某个键时 您会得到 aaaaaaaaaaaaaaa 具体取决于初始按键延迟 addKeyListener new KeyAdapter public void keyPressed KeyEvent e Handle
  • 提交搜索或选择搜索建议时隐藏键盘

    我有一个操作栏搜索小部件 也提供搜索建议 当用户输入查询并提交或选择搜索建议时 键盘不会消失 我该如何解决这个问题 我无法弄清楚如何在搜索提交或建议选择时隐藏键盘 谢谢 要隐藏输入法编辑器 请使用InputMethodManager Inp
  • SQL错误:0,SQLState:08S01通信链路故障[重复]

    这个问题在这里已经有答案了 我收到此错误 不那么频繁 2013 05 08 16 44 35 786 WARN JDBCExceptionReporter java 100 org hibernate util JDBCExceptionR
  • 获取 cassandra 连接错误

    我无法使用 Eclipse 连接到 Cassandra ver2 0 5 这是错误的完整日志 16 06 59 818 main 警告 c d driver core FrameCompressor 无法 找到 Snappy 类 你应该确保
  • 使用 Spring MVC,接受带有错误 JSON 的 POST 请求会导致返回默认的 400 错误代码服务器页面

    我正在开发 REST api 接收带有错误 JSON 的 POST 消息 例如 sdfasdfasdf 会导致 Spring 返回 400 错误请求错误的默认服务器页面 我不想返回页面 我想返回自定义 JSON 错误对象 当使用 Excep
  • Java中遍历所有文件

    我想让我的程序打印我计算机上所有文件的巨大列表 我的问题是 当我希望它打印位于我的计算机上的所有文件时 它仅打印第一个硬盘驱动器的第一个文件夹中的文件 有什么想法我在这里做错了什么吗 谢谢 这是我使用的代码 Main import java
  • 深入理解Java中的Volatile

    Java是否允许输出1 0 我已经对其进行了非常深入的测试 但无法获得该输出 我只得到1 1 or 0 0 or 0 1 public class Main private int x private volatile int g Exec
  • 如何使用appium和java在Android中向下滚动以单击元素?

    我想知道如何使用appium和java向下滚动以单击Android中的元素 我里面有一个元素列表 android support v7 widget RecyclerView由于它有10多个元素 所以我们需要滑动屏幕才能看到下面的元素 每个
  • 从java管理unix进程的最佳方法是什么?

    我正在寻找一些简单的任务 例如列出用户的所有正在运行的进程 或者通过pid等杀死特定进程 来自Java的基本unix进程管理 有没有相对成熟且有文档的库 我可以从 JVM 运行外部命令 然后解析标准输出 错误 但这似乎需要大量工作 而且一点
  • Amazon SQS 旧配置文件格式警告

    我正在将消息发布到 Amazon SQS 队列 启动时 我在日志中收到以下警告 http nio 9090 exec 2 BasicProfileConfigLoader The legacy profile format requires

随机推荐