问题描述:我在Ubuntu服务器上建立了一个网站,在本机上用curl localhost或者127.1 都可以访问,但是就是直接用服务器的ip不行。
最初在网上查感觉问题无非就是防火墙设置(如果是这个原因就不用看后面的了)以及端口未打开或绑定不正确,可自己就是解决不了。最后我确定是后者的问题。
我的网站是用sinatra建立的,一开始运行的时候直接用 ruby run.rb
解决之前已有的工作
- 明白通过
netstat -tnl
可以查看端口及绑定的情况 - 之前运行成功过一个网站是通过
ruby -run -e httpd . -p 4567
,这个可以直接访问
于是我仔细对比上面两种ruby运行网站的方式netstat -tnl
的结果有什么不同,对比后发现
ip那里不同,于是想到指定ip,这样就解决了:
ruby run.rb -o 0.0.0.0
总结 猜想大致就是只有0.0.0.0
这种才被认为是所有主机都可以连入,否则就只能是指定的ip才行,其余都 connection refused
很高兴,没想到在一头雾水的情况下发现不同之处,于是柳暗花明。