我可以从浏览器“http://localhost:8080/”访问,但不能访问“my_private_ip:8080/”

Posted

技术标签:

【中文标题】我可以从浏览器“http://localhost:8080/”访问,但不能访问“my_private_ip:8080/”【英文标题】:I can reach from browser "http://localhost:8080/" but not "my_private_ip:8080/" 【发布时间】:2016-09-02 12:05:15 【问题描述】:

我在我的作业局域网中,我的 Macintosh (Mac OS X El Capitan 10.11.4) 的私有 IP 是 192.168.1.9,我的防火墙是关闭的。 我在“http://localhost:8080/”上运行了一个 wildfly 10 网络项目,直到我从 localhost 访问该项目一切正常,当我尝试从 http://192.168.1.9:8080/ 访问它时,谷歌浏览器告诉我:

This site can’t be reached
192.168.1.9 refused to connect.
Search Google for 192 168 8080
ERR_CONNECTION_REFUSED

我需要从外部移动设备访问它,但如果我什至无法从我自己的计算机从计算机本身的 IP 访问它,则很难将其传递给移动设备...

奇怪的是我也有 MAMP Apache 端口在端口 80 上侦听,实际上“http://localhost/”和“http://192.168.1.9/”都工作得很好(向我展示了默认的 MAMP“www/index.php” )。

【问题讨论】:

您的 Wildfly 服务器是侦听 ip 192.168.1.9 端口 8080 还是仅侦听 localhost 端口 8080。试试 netstat -ltn(我希望语法正确,我从未使用过 MAC。;-)) 我执行了命令,没有找到任何“192.168.1.9.8080”,这是什么意思吗? 正如我在下面写的那样,我用standalone.sh -b 192.168.1.9 解决了,但我不得不从命令行运行它...我仍在尝试从 Eclipse 中解决它,因为它仍然无法莫名其妙地工作。 当然,这意味着什么。正如您自己发现的那样(恭喜):如果服务器不侦听特定地址,则浏览器无法连接到该地址。并且localhost 与绑定到网络适配器的网络地址不同。此外,监听 localhost 比每个防火墙都好,因为无法从外部网络访问它。 localhost 分配给所谓的环回地址,该地址仅可用于计算机内部的进程。请将您的答案标记为已接受。我会赞成的。 如果您在standalone.xml 配置文件中更改了IP 地址,那么它也应该适用于eclipse。 (如果您将正确的standalone.xml 分配给您在eclipse 中使用的服务器adpater 配置文件,那当然)。如果它不起作用,即使它被正确分配,也可能为您的运行配置文件配置了一个应用程序参数(-b ...)。不过不好意思,我不知道这个在eclipse哪里可以配置。 【参考方案1】:

从 Eclipse 配置

如果您想从 Eclipse 设置 IP,您应该按照以下步骤操作(更改文件 Standalone.xml 中的 IP 在 Eclipse 中不起作用,因为设置了 -b 选项,请参见下文...)

这是在eclipse上配置它的步骤:

    单击您的 Wildfly 服务器 点击Open Launch Configuration 取消选中Always update arguments related to the runtime,然后使用your_private_ip 更改-b 选项(如果删除选项-b localhost,您可以直接从standalone.xml 文件配置它,请参阅下面的配置部分) 或者简单地说,而不是 2. 解决方案,选中框 Listen on all interfaces to allow remote web connections

standalone.xml配置

另一种方法是在 standalone.xml 接口部分进行配置。

变化:

<interfaces>
  <interface name="management">
   <inet-address value="127.0.0.1"/>
  </interface>
  <interface name="public">
   <inet-address value="127.0.0.1"/>
  </interface>
</interfaces>

到:

<interfaces>
  <interface name="management">
   <!-- Use the IPv4 wildcard address -->
   <any-ipv4-address/>
  </interface>
  <interface name="public">
   <!-- Use the IPv4 wildcard address -->
   <any-ipv4-address/>
  </interface>
</interfaces>

或者简单地将 127.0.0.1 替换为您的私有 IP


从命令行配置(从命令行运行服务器)

另一种选择是直接从命令行运行它。 默认 jboss/wildfly 绑定到 localhost,如果你想改变这个,你可以执行:

standalone.sh -b 0.0.0.0

监听机器的所有 IP 地址(如果多宿主)

或者如果你想在你的 ip 上收听:

standalone.sh -b your_private_ip

参考:

WildFly - Interfaces and ports WildFly - Command line parameters

【讨论】:

为了帮助人们找到您的答案,最好将其标记为已接受的答案。这是一个清晰、正确和易于理解的文本,可以帮助其他人解决同样的问题。 当然,但是 *** 让您等待几天,我认为这是因为 *** 希望其他人离开他们可能的解决方案。我今天不能接受。 好吧,我不知道!对不起,下次我会更有耐心。 ;-) 在我给别人好的建议之前,也许我应该自己问至少一个问题,看看它是如何工作的。 ;-) 谢谢! 啊,别担心,我认为他们最近在 *** 中更改了此策略。再见,再次感谢!

以上是关于我可以从浏览器“http://localhost:8080/”访问,但不能访问“my_private_ip:8080/”的主要内容,如果未能解决你的问题,请参考以下文章

http://localhost:8080打开tomcat主页的原理是啥

使用 IP 地址而不是 localhost 浏览网站

IWebViewControl for localhost

RabbitMQ发布可以从控制台运行,但不能从浏览器运行

当我浏览 http://localhost:8004/elmah.axd 时,它会生成 404 错误

localhost 在 Webapi 操作中拒绝连接