在本地网络 IP 192.168.X.X 上运行 Spring 应用程序

Posted

技术标签:

【中文标题】在本地网络 IP 192.168.X.X 上运行 Spring 应用程序【英文标题】:Running Spring app on local network IP 192.168.X.X 【发布时间】:2017-01-30 01:52:57 【问题描述】:

我在本地主机上运行我的 Spring Web 应用程序,所以两个地址都可以工作:

http://localhost:9999/app

http://127.0.0.1:9999/app

我还希望看到这个应用程序在我机器的具体 IP 上运行(以便从移动设备访问它,但这在这里不太重要)。我使用 ipconfig 来获取我的 IPv4,但是当我像这样使用它时:

http://192.168.1.4:9999/app

我收到“无法访问此网站”。那仍然在我的本地机器上, 不是移动的。我还应该设置其他什么来使其正常工作吗?

编辑:这是一个说明问题的 PrintScreen。我不认为这是应用配置的问题,因为服务器控制台应该在所有情况下都出现,即使没有部署或运行​​应用。

【问题讨论】:

您的服务器与您尝试访问的服务器在同一台计算机上运行,​​对吗?否则,请告诉我们您是否在同一子网中。这有很大的不同。 你能检查端口是否打开吗?你能检查一下是否有其他应用程序正在使用该端口吗?你能确认你的路由器没有阻塞流量吗?最后,您能否确保两台设备都在同一个网络中,或者至少遵循相同的 DHCP 规则?如果是这样,请编辑您的问题并添加详细信息。 @Pierre - 这是同一台机器。 两种情况下的端口相同(localhost 和 192.168.X.X )并且没有被阻塞。在这个阶段,我正在处理在同一台机器上打开这个 adderes。 你能在 C:\Windows\System32\drivers\etc\hosts 中检查是否有任何倒退的地方(例如:先放置主机,然后放置 IP)。如果它们都在同一台机器上,那么它甚至不应该到达网卡,这一切都发生在 OS = 配置问题中。另外,您可以尝试将 http:// 放在您的 IP 前面,只是为了好玩? 【参考方案1】:

您需要做的就是将它添加到您的 app.properties(或任何您称为 spring 属性的文件)

server.address=<your_ip>

just as described here

【讨论】:

我不应该至少看到一个服务器控制台吗?这应该在没有任何应用配置的情况下加载 我真的不知道你看到服务器控制台是什么意思,但你应该配置你的应用程序:)以防你只是在内部开发一些东西 - 只需运行 ipconfig,复制你的地址并粘贴它在配置文件中。如果您希望它比您的 DHCP ip 地址更稳定 - 请查看 Saraths 答案 我远不是 WildFly 方面的专家,但我肯定知道一件事。 Spring 和任何 JEE 应用程序容器都不能很好地混合。有些东西可以在 Springs 和容器端进行管理。通常会涉及一些问题,并且容器的配置通常更重要。也就是说,我不得不问:你为什么选择 WildFly?您需要从应用服务器获得什么吗?【参考方案2】:

我也有同样的问题。 我的目标是在 Windows(我的本地计算机)上运行一个 Springboot 应用程序,并允许我的手机访问该应用程序。

我通过以下方式解决了我的问题:

1.如上所述设置静态IP地址。

我使用命令提示符运行ipconfig,我可以看到:

IP address=192.168.1.99 
Subnet Mark=255.255.255.0 
Default gateway = 192.168.1.1  

然后我复制这些值来设置静态 IP。 我设置了 preferred DSN Servr = 192.168.1.1 并将备用 DNS 服务器留空。

2。在Springboot项目的“application.properties”文件中 添加server.address=192.168.1.99

感谢以上所有建议:)

【讨论】:

这可能不适用于基于容器的部署,因为大多数时候我们确实会扩大和缩小我们的应用程序。【参考方案3】:

默认情况下,DHCP 会为您分配一个会更改的 IP 地址。您需要为您的机器设置静态 IP 地址。 检查此链接

对于 Windows

http://www.howtogeek.com/howto/19249/how-to-assign-a-static-ip-address-in-xp-vista-or-windows-7/

如果您的操作系统不是windows,您可以找到您的操作系统在互联网上设置静态IP地址的说明。

重要提示:确保系统防火墙允许该端口 或在您的防病毒设置中。否则将无法正常工作。

【讨论】:

我有 Windows 10。我完全停止了防火墙服务 这其实是 Win 7,我用的是 WildFly 10 和 STS 3.8.1 好的,你的客户端是windows7,你的服务器是windows10?这很重要(不在同一台机器上=应用网络规则)。你的Win7机器和Win10服务器在同一个网络吗?例如:两台计算机是否连接到同一个路由器?如果它们不在同一个子网上,则无法使用 192.168.x.x 格式的 IP 进行连接 这是单机Win7的,没有其他的了(之前搞错了,麻烦大家见谅)。最终目标是从移动设备访问在 localhost 上运行的应用程序,但目前这无关紧要。请参阅我添加的 PrintScreen。【参考方案4】:

从您的屏幕截图和“客户端和服务器在同一台机器上”的新信息中,我搜索了 WildFly 中的问题,想知道您是否必须按照以下答案设置您的 IP:JBoss WildFly: Starts but can't connect?

另请查看此页面(多宿主):http://blog.arungupta.me/bind-wildfly-different-ip-address-multihomed/,您可能需要这样做:

standalone.sh -b=192.168.1.4

[我将保留这部分完整,以防再遇到这个问题并想调试类似的问题]

您使用的 IP [192.168.x.x] 只能在私人网络中使用。见:https://en.wikipedia.org/wiki/Private_network

因此,如果不知道您的客户端和服务器是否在同一台机器、同一网络或不同网络上,就很难回答这个问题。

1) 是您的客户端与服务器在同一台机器上:那么使用该 192.168.x.x IP 应该可以工作,是的。如果它们在同一台机器上,那么它甚至不应该到达网卡,这一切都发生在 OS [或以上​​] = OS 或应用程序配置问题。在这种情况下的一些建议:您能否检查 C:\Windows\System32\drivers\etc\hosts [/etc/hosts on *nix] 以查看那里是否有任何倒退(例如:先放置主机,然后放置 IP) . .另外,您可以尝试将 http:// 放在您的 IP 前面,只是为了好玩? 否则:如果您的客户端与服务器位于不同的机器上,我们需要知道: 2) 您的客户端和服务器是否在同一个子网上(例如:连接到同一个路由器)?如果是这样,那么您可以使用 192.168.x.x 格式的 IP,您的问题可能是由于服务器(或其他)上的防火墙规则造成的。但我们可以让它处理更多细节。 3) 是您在不同子网或完全不同网络上的客户端和服务器(例如:您尝试从笔记本电脑连接到 AmazonWebService 或其他在线位置的服务器)。在这种情况下,您将无法使用 192.168.x.x 格式的 IP 调用您的服务器,因为该 IP 范围仅位于其子网的本地。找到您的服务器机器的公共 IP。例如,在 AWS 中,您有私有和公共 IP。如果您的服务器位于家庭网络上,您可能需要设置 DMZ(非军事区)和/或网络地址转换,以便您的路由器可以根据例如服务器端口号等将传入的 HTTP 请求转发到您的服务器。

【讨论】:

同一台机器,都在本地主机上。查看 PrtScreen

以上是关于在本地网络 IP 192.168.X.X 上运行 Spring 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在我的网页中获取IP地址(192.168.X.X,由无线路由器分配)?

本地IP和公网IP是啥,怎么查询

如何设置正确的IP地址和DNS?

使用Python的stdlib查找本地IP地址

XAMPP wordpress LAN,重定向到本地主机

获取本机公网ip(public ip)