解决无法通过ip访问服务器上的网站

问题描述:我在Ubuntu上建立了一个网站,在本机上用curl localhost或者127.1 都可以访问,但是就是直接用服务器的ip不行。

最初在网上查感觉问题无非就是防火墙设置(如果是这个原因就不用看后面的了)以及端口未打开或绑定不正确,可自己就是解决不了。最后我确定是后者的问题。

我的网站是用sinatra建立的,一开始运行的时候直接用 ruby run.rb

解决之前已有的工作
1. 明白通过netstat -tnl可以查看端口及绑定的情况
2. 之前运行成功过一个网站是通过 ruby -run -e httpd . -p 4567,这个可以直接访问

于是我仔细对比上面两种ruby运行网站的方式netstat -tnl 的结果有什么不同,对比后发现
解决无法通过ip访问服务器上的网站

ip那里不同,于是想到指定ip,这样就解决了:
ruby run.rb -o 0.0.0.0

总结 猜想大致就是只有0.0.0.0这种才被认为是所有主机都可以连入,否则就只能是指定的ip才行,其余都 connection refused

很高兴,没想到在一头雾水的情况下发现不同之处,于是柳暗花明。