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