首页 > 解决方案 > 如何在端口 3001、3002 等上运行 Node/Express 应用程序?

问题描述

我们在单个服务器中使用 4 个不同的 express 项目,pm2 start从每个项目根目录运行 cmd 来启动应用程序。

并且使用 ec2 Linux 服务器,添加 port 30003001到入站规则,两者都运行良好但无法通过 访问 API 3001,并且能够通过 3000 访问,可能是什么问题?

同一个项目在 运行3000,但不在3001,所以我们可以确认,我们的项目中没有错误。

在终端尝试nodemon app它运行良好,但没有通过Postman得到相同的错误访问:

Could not get any response

There was an error connecting to http://ec2-x-x-amazonaws.com:3001/api/login.

我们如何在可用/定义的端口中运行多个节点/快速项目?

3001    tcp 0.0.0.0/0, ::/0 ✔
3000    tcp 0.0.0.0/0, ::/0 ✔

一些运行时没有添加作为入站规则的端口,例如 8088、8089。

pm2 status 显示所有端口都运行良好。

在此处输入图像描述

pm2 list上面id 8有端口号3001

标签: node.jshttpamazon-ec2pm2port-number

解决方案


注意:不一定是答案,但这些是我之前搞砸的一些事情,这是我用来解决问题的过程...

PM2 配置

首先检查这个以确保您没有任何冲突。 (如评论中所述,如果可能,
请提供 PM2 配置文件的屏幕截图pm2 list

) 您如何运行 PM2,单个ecosystem.json配置?多个ecosystem.json配置?无论哪种方式...

确保每个都app具有正确指定的属性...

  • script:(启动脚本)
  • cwd:(工作目录)
  • name:每个过程的唯一性
  • 如果您env:在 PM2 配置中指定环境变量,请确保它们分别正确设置为30003001
  • 确保您没有意外硬编码两个应用程序以在3000.ie 上运行。确保这些env配置实际上正在使用。

这里要注意的另一件事是,如果您更新您的 PM2 配置文件,a simplepm2 restart将不会查找新配置。您将需要添加--update-env标志。



基本端口 Web 服务器测试

如果上面对 PM2 的检查没问题,那么我现在将通过完全消除节点来进一步缩小范围。您可以尝试这样的方法来快速测试端口 3001 的可访问性...

  1. 停止所有 pm2 进程

pm2 stop all

  1. 安装 Nginx

sudo apt-get install nginx

  1. 编辑默认配置文件

sudo nano /etc/nginx/conf.d/default或者你想要的任何编辑器

  1. 配置服务器。添加到文件顶部...

 server {
      listen 3001;
      listen [::]:3001;
      location / {
          return 200 '3001 works!';
      }
  }

  1. 重启 Nginx

sudo service nginx restart


现在尝试访问端口 3001 的公共 IP,它应该会下载一个文本文件到您的计算机,并显示“3001 有效!”

如果这可行,则问题不是 EC2 或相关的安全组,而是您的节点服务器。


推荐阅读