3

我正在尝试将 Ruby Sinatra api 部署到 EC2 微实例的端口 4567 上。

我创建了一个具有以下规则的安全组(并使用所述安全组创建了实例):

--------------------------------
| Ports | Protocol | Source    |
--------------------------------
|  22   | tcp      | 0.0.0.0/0 |
|  80   | tcp      | 0.0.0.0/0 |
|  443  | tcp      | 0.0.0.0/0 |
|  4567 | tcp      | 0.0.0.0/0 |
--------------------------------

我在端口 4567 上绑定了 myapp.rb(默认设置,但用于详细说明):

set :port, 4567

并运行服务:

ruby myapp.rb
[2013-09-05 03:12:54] INFO  WEBrick 1.3.1
[2013-09-05 03:12:54] INFO  ruby 1.9.3 (2013-01-15) [x86_64-linux]
== Sinatra/1.4.3 has taken the stage on 4567 for development with backup from WEBrick
[2013-09-05 03:12:54] INFO  WEBrick::HTTPServer#start: pid=1811 port=4567

nmap在 localhost 上的 EC2 实例中使用ssh 时使用:

Starting Nmap 6.00 ( http://nmap.org ) at 2013-09-05 03:13 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
PORT     STATE SERVICE
4567/tcp open  tram

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

nmap在外部 ip 上的 EC2 实例中使用ssh 时使用:

Starting Nmap 6.00 ( http://nmap.org ) at 2013-09-05 03:15 UTC
Nmap scan report for <removed>
Host is up (0.0036s latency).
PORT     STATE  SERVICE
4567/tcp closed tram

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

如何将端口的状态从关闭更改为打开?

4

2 回答 2

3

您正在开发环境中启动 Sinatra。在开发中运行时,Sinatra 只监听来自本地机器的请求

有几种方法可以改变这一点,最简单的可能是在生产环境中运行,例如:

$ ruby myapp.rb -e production

如果您想继续在开发中运行,您还可以显式设置绑定变量:

set :bind, '0.0.0.0' # to listen on all interfaces
于 2013-09-05T12:22:10.033 回答
0

您的问题有两个可能的原因。

  1. 您的服务仅侦听环回接口上的连接。
  2. 软件防火墙正在运行并阻止该端口上的外部连接。
于 2013-09-05T03:55:14.817 回答