在localhost:8000上侦听端口,但在ip:8000上侦听端口


9

您好,我在端口8000上运行一个Web应用程序。当我从主机服务器localhost:8000访问它时,它响应正常,127.0.0.1:8000也可以,但是192.168.1.7:8000不起作用。192.168.1.7是我的服务器的IP。

另外,如果我尝试转到运行在端口80上的另一个Web应用程序,则可以使用192.168.1.7

我启用了ufw防火墙并设置了ufw默认允许。我正在使用ubuntu服务器12.04

关于为什么我无法使用ip-address:8000在端口8000上访问我的应用程序的任何建议?

提前致谢!


1
该应用程序可能正在侦听本地主机地址(127.0.0.1),而不是所有本地地址(0.0.0.0)。不过,您在应用程序上提供的信息不足,无法让人们帮助您解决此问题。
詹姆斯·亨斯特里奇

我在端口8000上运行的应用只是一个网站。也许此netstat复制/粘贴操作将揭示有关我的网络的更多信息:
Marionette 2012年

3
好吧,跑步netstat -tln | grep 8000也许可以解决这个问题。如果服务器的本地地址127.0.0.1:8000不是0.0.0.0:8000,则只能通过环回接口访问。
詹姆斯·亨斯特里奇

检查您的iptables

Answers:


5

正如@JamesHenstridge指出的那样,您观察到的行为不是由于Ubuntu在某些IP上阻止了您的应用程序,而是由于您的应用程序仅明确绑定到本地回送接口(127.xxx)。至少如果您没有安装并设置防火墙来专门阻止该端口,那么至少是这样。

您需要查阅应用程序的文档,以查看是否存在使它在其他(或所有)接口上侦听的设置。


您还熟悉路由器上的端口转发吗?如果要从端口8000上的Internet连接到它,则需要将端口8000转发到该计算机ip。
wlraider70

0

在应用程序的一个配置文件中,应将应用程序设置为侦听外部externalIP:您的端口。这意味着存在一个配置文件,您可以在其中找到一个指令,告诉指令应用程序侦听127.0.0.1:xxxx或localhost:xxxx。这是要使用内部IP(例如:192.168.1.40)或外部IP更改的IP

有时,应将本地IP替换为0.0.0.0:xxxx,这意味着应用程序应回答来自任何IP的请求。

iptables还可以帮助将数据包从内部IP转发到外部IP。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.