Sinatra EC2 部署安全组错误



我正在尝试将Ruby SinatraAPI部署到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

在本地主机上的 EC2 实例中使用 ssh 时nmap

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

在外部 IP 上的 EC2 实例中进行 ssh 时使用nmap

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

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

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

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

$ ruby myapp.rb -e production

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

set :bind, '0.0.0.0' # to listen on all interfaces

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

  1. 您的服务仅侦听环路接口上的连接。
  2. 软件防火墙正在运行,并阻止来自该端口的外部连接。

最新更新