【问题标题】:Nginx is refusing to connect on AWS EC2Nginx 拒绝连接 AWS EC2
【发布时间】:2019-03-03 13:56:16
【问题描述】:

我正在尝试使用 nginx 来设置一个简单的 node.js 服务器,我在 4000 端口上在后台运行服务器,我的 nginx 配置文件是

server {
  listen 80;
  listen [::]:80;
  server_name 52.53.196.173;
  location / {
    include /etc/nginx/proxy_params;
    proxy_pass http://127.0.0.1:4000;
  }
}

我将它保存在 /etc/nginx/sites-available 中,并将其符号链接到启用站点,nginx.conf 文件已经包含从启用站点加载文件的包含行,然后我使用重新启动服务 sudo 服务 nginx 重启 我试图去 52.53.196.173 并且它拒绝连接,但是去 52.53.196.173:4000 和端口 4000 它正在工作,但我试图让它用 nginx 监听端口 80,我试着把我的 .ml 域作为 server_name 并且没有运气,并且我将 IP 52.53.196.173 作为域 dns 设置中的 A 记录,并且我在 AWS EC2 实例 Ubuntu Server 16.04 上执行此操作,我什至尝试了完整的 ec2 公共 dns url 没有运气,有什么想法吗?

编辑:我通过将文件直接移动到启用站点而不是符号链接来解决它

【问题讨论】:

    标签: node.js nginx amazon-ec2 reverse-proxy


    【解决方案1】:

    几乎没有可能的事情。首先,您需要验证 nginx 服务器是否正在运行并侦听端口 80。您可以使用以下命令检查侦听端口。

    netstat -tunlp
    

    然后你需要检查你的服务器防火墙和 selinux 策略。 (或禁用 selinux 进行测试)

    然后您需要验证 AWS 安全组配置为访问端口 80 上的 http/https 连接。

    PS:以下命令和配置的输出将有助于故障排除。

    netstat -tunlp
    sestatus
    iptables -L
    
    * AWS Security Group Rules
    * Nginx configurations ( including main configuration if changed )
    

    P.S : OP 通过将配置文件直接移动到 site-enabled 目录来解决问题。如果您遇到同样的问题,也许可以冷藏 cmets 以获取更多信息。

    【讨论】:

    • netstat 输出 hastebin.com/ehetegoxif.nginx AWS 安全组 i.imgur.com/md7rlNn.png 我没有触及主要的 nginx 配置 (nginx.conf)
    • 好像没有监听80端口。你能发布特定应用程序的nginx配置吗?以及nginx服务的服务状态?
    • 对于 sudo service nginx status hastebin.com/amawezikap.rb 的输出以及“特定应用程序的配置”是什么意思,我确实发布了我在问题中使用的 nginx 文件
    • 你是否删除了 nginx.conf 文件?
    • 你能发布 nginx.conf 吗?我在评论后看到了您的应用程序特定配置位。对不起,我的错:/
    【解决方案2】:

    很可能端口 80 可能未在您的安全组中打开,或者 nginx 未运行以接受连接。请发布 nginx 状态并检查安全组

    【讨论】:

    • 端口很好,当我第一次安装 nginx 时,默认配置欢迎页面已加载,但当我删除它并添加我自己的时,它现在不起作用
    • 在 url 中输入 ip 地址请求页面时,在端口 80 上使用 tcpdump 进行测试。这将判断请求是否到达服务器的端口 80。 tcpdump -i eth0 'port 80' 其中 eth0 是您服务器上的以太网卡接口。
    • 我不知道什么是以太网卡
    • 如果你在 shell 提示符下输入 ifconfig,它会给你以太网接口的名字。通常它总是 eth0
    • 我做了 tcpdump 的事情,是的,我确实收到了一些数据包
    【解决方案3】:

    检查以下内容:

    1. 在安全组中,在inbound部分添加Http(80)和Https(443),ip为0.0.0.0如下:

    对于80

    对于443

    1. 在网络 ACL 中,允许在 http 和 https 上入站。出站设置自定义 TCP 角色如下:

    入站角色:

    出站角色:

    1. 在 ec2 实例上分配一个弹性 ip,监听这个 ip 供公共使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2016-09-15
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多