无法在浏览器中使用 Ubuntu 服务器的公共 IP 访问我的 Rails

无法在浏览器中使用 Ubuntu 服务器的公共 IP 访问我的 Rails

我有一个 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 -Lou 应该会看到类似以下内容:

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)。

相关内容