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

プーマサーバーが正常に起動しました

    => 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を確認してみましょう。 ouを実行すると、iptables -L次のような内容が表示されます。

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)のみを受け取ります。

関連情報