无法访问在Ubuntu服务器上运行在某个端口上的项目

5
我在本地创建了一个项目。前端是运行在4200端口的angular,后端是运行在8000端口的laravel。在我的本地主机上,我使用php artisan serve命令运行后端并让其在8000端口上运行;对于前端,我使用ng serve命令并让其在4200端口上提供服务。现在,我已经将该应用部署到了安装有Ubuntu 16.04系统的EC2实例上,并在其上安装了LEMP堆栈。我克隆了我的项目,并运行了命令来启动前端和后端应用。但是,当我在浏览器中输入IP地址和端口号以访问该应用程序时,它显示This site can’t be reached 18.***.7.** refused to connect。在运行这两个命令后,终端显示它们正在运行。我还使用了sudo lsof -i -P -n | grep LISTEN命令查看进程是否在运行,结果显示两个进程都在4200和8000端口上运行,但我仍然无法访问它们。

enter image description here

看截图。两个端口都在监听,但我无法访问它们。
编辑:安全组如下所示
所有 | 所有流量 | 所有 | 0.0.0.0/0
所有流量 | 所有 | 所有 | ::/0
自定义TCP规则 | TCP | 8000 | 0.0.0.0/0
自定义TCP规则 | TCP | 8000 | ::/0
SSH | TCP | 22 | 0.0.0.0/0
注意:如果我只在浏览器中输入服务器的IP地址,它会显示nginx欢迎页面,但是IP:PORT会出现此错误。

1
看起来你的8000端口服务绑定在127.0.0.1 IP地址上,这也通常被称为localhostloopback。因此,你只能从服务器本地访问端口8000,而无法从网络上的其他设备访问,即使安全组是开放的。 - Jamie Starke
你能发布你的PHP配置吗? - Jamie Starke
当nginx启动时,它会绑定到本地机器的某个端口和地址,并等待传入请求。在你的情况下,它看起来是绑定到特定IP 127.0.0.1上,因此无法访问。将nginx服务器设置为可访问127.0.0.1,因为它是后端,而Angular运行在端口4200上,可访问为*。您可以使用ng server更改绑定。 authbind ng serve --port 80 --host * - Ali
1个回答

1

你的问题在于本地主机(127.0.0.1)正在提供你的应用程序,特别是你需要的2个端口(8000和4200),如图所示: 箭头显示您的端口开放位置

解决方案是在IPv4 / IPv6接口上提供您的应用程序,而不是环回/本地主机,因此不要在Web服务器配置中使用Localhost:4200;而是使用0.0.0.0:4200(以便在所有接口上侦听)或[::]:80,以便可以访问端口80(尽管它已被弃用,因为所有黑客都会首先攻击标准的http / https端口即端口80:D,因此坚持使用自定义/随机端口)。 有关配置Web服务器的更多信息,请参阅此链接:https://www.atlantic.net/hipaa-compliant-cloud-storage/how-to-install-lemp-stack-ubuntu-16-04/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接