Nginx拒绝连接AWS EC2

时间:2018-09-27 15:37:25

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

我正在尝试使用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中,并且也将其符号链接到启用了sites的站点,nginx.conf文件已经包含了include行,可以从启用了sites的站点加载文件,然后我使用重新启动了服务     sudo服务nginx重启 我尝试转到52.53.196.173,但它拒绝连接,但是使用端口4000转到52.53.196.173:4000,它正在工作,但是我试图使其通过nginx在端口80上侦听,我尝试将.ml域作为server_name且没有运气,并且我在域dns设置中将IP 52.53.196.173作为A记录,而我正在AWS EC2实例Ubuntu Server 16.04上执行此操作,我什至尝试了完整的ec2公共dns url没运气,有什么想法吗?

编辑:我通过直接在启用了站点的文件而不是符号链接中移动文件来解决了该问题

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

几乎没有可能。首先,您需要验证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通过将配置文件直接移动到启用站点目录中来解决此问题。也许,如果遇到相同的问题,请重新保存评论以获取更多信息。

答案 2 :(得分:0)

检查以下内容:

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

对于80

enter image description here

对于443

enter image description here

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

入站角色:

enter image description here

出站角色:

enter image description here

  1. 在 ec2 实例上分配一个弹性 ip,为 public 监听这个 ip。