amazon-web-services - EC2 Meteor 部署上的 Web 连接被拒绝

标签 amazon-web-services docker amazon-ec2 meteor ubuntu-18.04

我正在使用 MUP 将 meteor 应用程序部署到运行 Ubuntu 18 的 EC2 实例。我的部署似乎有效,但是 当我尝试在浏览器中访问实例的公共(public) URL 时,我得到“连接被拒绝”。 我要疯了这个!
我认为这将是一个 AWS 问题,例如端口未打开,但我的 EC2 入站规则似乎应该可以工作:
enter image description here
我通过 SSH 连接到实例以查看是否一切正常,我认为可以。对于初学者来说,docker 容器似乎运行良好:

CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                NAMES
2b70717ce5c9        mup-oil-pricing:latest   "/bin/sh -c 'exec $M…"   About an hour ago   Up About an hour    0.0.0.0:80->80/tcp   oil-pricing
当我点击 curl localhost:80 时,仍然通过 SSH 连接我在控制台中返回 HTML,这表明应用程序(Meteor 应用程序)运行良好。
我检查了 Ubuntu 防火墙是否处于事件状态,但我认为不是:
ubuntu@ip-172-30-1-118:~$ sudo ufw status verbose
Status: inactive
我的端口看起来也不错(据我所知):
ubuntu@ip-172-30-1-118:~$ sudo netstat -tulpn | grep LISTEN
tcp        0      0 10.0.3.1:53             0.0.0.0:*               LISTEN      3230/dnsmasq
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      344/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7903/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      7903/sshd: /usr/sbi
tcp6       0      0 :::80                   :::*                    LISTEN      13597/docker-proxy
但是,当我在本地计算机上访问 Chrome 并尝试通过我分配的弹性 IP (34.231.39.181) 或通过 EC2 地址 (https://ec2-34-231-39-181.compute-1.amazonaws.com/) 使用 EC2 实例访问该站点时,我得到:
This site can’t be reached
ec2-34-231-39-181.compute-1.amazonaws.com refused to connect.
我认为这不是 MUP 问题,但这里是 MUP 配置,以防万一:
module.exports = {
  servers: {
    one: {
      host: '34.231.39.181',
      username: 'ubuntu',
      pem: [[MY PEM FILE]]
    }
  },

  hooks: {
    'pre.deploy': {
      remoteCommand: 'docker system prune -a --force' // PRUNE DOCKER IMAGES
    },
  },

  app: {
    name: 'oil-pricing',
    path: '../',
    servers: {
      one: {},
    },

    buildOptions: {
      serverOnly: true,
    },



    env: {
      ROOT_URL: 'https://ec2-34-231-39-181.compute-1.amazonaws.com/',
      MONGO_URL: [[MY MONGO URL]]
      PORT: 80,
    },



    docker: {
      image: 'abernix/meteord:node-8.15.1-base', // per: https://github.com/zodern/meteor-up/issues/692
    },

    enableUploadProgressBar: true
  },

};
当我运行 mup deploy一切检查:
Started TaskList: Pushing Meteor App
[34.231.39.181] - Pushing Meteor App Bundle to the Server
[34.231.39.181] - Pushing Meteor App Bundle to the Server: SUCCESS
[34.231.39.181] - Prepare Bundle
[34.231.39.181] - Prepare Bundle: SUCCESS

Started TaskList: Configuring App
[34.231.39.181] - Pushing the Startup Script
[34.231.39.181] - Pushing the Startup Script: SUCCESS
[34.231.39.181] - Sending Environment Variables
[34.231.39.181] - Sending Environment Variables: SUCCESS

Started TaskList: Start Meteor
[34.231.39.181] - Start Meteor
[34.231.39.181] - Start Meteor: SUCCESS
[34.231.39.181] - Verifying Deployment
[34.231.39.181] - Verifying Deployment: SUCCESS
如果这很重要,我正在使用 Meteor 1.8.1。
任何帮助将不胜感激!

最佳答案

您的 sudo netstat -tulpn | grep LISTEN表明您正在监听端口 80。但您正在使用 HTTPS:

https://ec2-34-231-39-181.compute-1.amazonaws.com
这将连接到端口 443,没有任何东西监听。因此,要么更改您的应用程序以监听端口 443 上的 HTTPS 连接(需要适当的 ssl 证书),要么使用将转到端口 80(未加密)的 HTTP:
http://ec2-34-231-39-181.compute-1.amazonaws.com

关于amazon-web-services - EC2 Meteor 部署上的 Web 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64271147/

相关文章:

python - 从 Python 调用 AWS Rekognition HTTP API 的示例

mysql - Aurora 无服务器未从 CLI 和 mysql 工作台连接

amazon-web-services - 如何使用 Terraform 选择未使用的 VPC CIDR block ?

hadoop - 无法使用 gethue/hue docker 镜像配置 HDFS 地址

amazon-web-services - 在 kubernetes 中的不同云提供商的现有集群中添加节点时出现问题?

javascript - web.js 和 npm express - 警告 : express. createServer() 已弃用

amazon-web-services - 使用 InstanceProfileCredentialsProvider 是否是从 Ec2 实例连接到 AWS S3 的正确方法?

php - postman 请求 : ImportError: cannot import name DEFAULT_CIPHERS

android - AWS Android SDK 示例中的 "the provided key element does not match the schema"

shell - 如何从远程计算机上的jenkins中的SSH将变量导出到本地计算机上的shell?