我有一个 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-63-generic x86_64) 服务器,我的公共 IP 类似于 183.xx.xxx.xx (curl -4 icanhazip.com)。我已经启动了我的 Rails应用程序使用命令:
rails s -b0.0.0.0 -p3002
puma服务器已成功启动
=> Booting Puma
=> Rails 5.0.3 application starting in development on http://localhost:3002
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.9.1 (ruby 2.4.0-p0), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3002
Use Ctrl-C to stop
我尝试使用以下方式在浏览器中访问我的应用程序:
http://183.xx.xxx.xx:3002
我正进入(状态
This site can’t be reached
172.xx.xxx.xx took too long to respond.
ERR_CONNECTION_TIMED_OUT
非常感谢任何帮助。提前致谢!
编辑1
netstat -plnt
tcp 0 0 0.0.0.0:45109 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3002 0.0.0.0:* LISTEN 25689/0.0.0.0:3002)
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN -
进程正在运行,pid 为 25689
答案1
首先,我会检查 iptables。执行iptables -L
ou 应该会看到类似以下内容:
ACCEPT tcp -- anywhere anywhere tcp dpt:3002 ctstate NEW
这意味着您的防火墙允许连接到该端口。如果不这样做,请尝试使用以下命令添加规则来访问该端口:
sudo iptables -A INPUT -p tcp --dport 3002 -j ACCEPT
答案2
假设浏览器与服务器位于同一台计算机上,您最好使用以下 URL:
http://127.0.0.1:3002
访问您自己的公共 IP 通常会出现问题,因为您通常依赖于相当复杂的路由。127.0.0.1
是另一个名称localhost
,是连接到同一台计算机上的服务器的标准方法。
有时服务器希望通过域名来访问。这看起来对您来说不是问题,但如果您走这条路线,只需将以下行添加到您的/etc/hosts
文件中:
127.0.0.1 your.public.domain.name
最后,如果您对 netstat 表中的外观感到困惑0.0.0.0
,请注意该表列出了接口服务器是什么倾听在。一些服务器正在监听全部接口(0.0.0.0
),而其他接口仅监听本地接口(127.0.0.1
)。