node.js - 如何在端口 3001、3002 等上运行 Node/Express 应用程序?
问题描述
我们在单个服务器中使用 4 个不同的 express 项目,pm2 start
从每个项目根目录运行 cmd 来启动应用程序。
并且使用 ec2 Linux 服务器,添加 port 3000
,3001
到入站规则,两者都运行良好但无法通过 访问 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
解决方案
注意:不一定是答案,但这些是我之前搞砸的一些事情,这是我用来解决问题的过程...
PM2 配置
首先检查这个以确保您没有任何冲突。
(如评论中所述,如果可能,
请提供 PM2 配置文件的屏幕截图pm2 list
)
您如何运行 PM2,单个ecosystem.json
配置?多个ecosystem.json
配置?无论哪种方式...
确保每个都app
具有正确指定的属性...
script:
(启动脚本)cwd:
(工作目录)name:
每个过程的唯一性- 如果您
env:
在 PM2 配置中指定环境变量,请确保它们分别正确设置为3000
和3001
。 - 确保您没有意外硬编码两个应用程序以在
3000
.ie 上运行。确保这些env
配置实际上正在使用。
这里要注意的另一件事是,如果您更新您的 PM2 配置文件,a simplepm2 restart
将不会查找新配置。您将需要添加--update-env
标志。
基本端口 Web 服务器测试
如果上面对 PM2 的检查没问题,那么我现在将通过完全消除节点来进一步缩小范围。您可以尝试这样的方法来快速测试端口 3001 的可访问性...
- 停止所有 pm2 进程
pm2 stop all
- 安装 Nginx
sudo apt-get install nginx
- 编辑默认配置文件
sudo nano /etc/nginx/conf.d/default
或者你想要的任何编辑器
- 配置服务器。添加到文件顶部...
server {
listen 3001;
listen [::]:3001;
location / {
return 200 '3001 works!';
}
}
- 重启 Nginx
sudo service nginx restart
现在尝试访问端口 3001 的公共 IP,它应该会下载一个文本文件到您的计算机,并显示“3001 有效!”
如果这可行,则问题不是 EC2 或相关的安全组,而是您的节点服务器。
推荐阅读
- python - 如何在 Facetgrid 中绘制 20 个不同的散点图 - Python (seaborn)
- javascript - 在 JavaScript 中反转字符串:为什么我的答案没有通过测试?
- java - 工厂模式是否可以仅用于一个用户定义的类而不能用于子类
- arrays - 是否有一个谷歌表格公式可以采用一系列单元格,并按字母顺序在一个单独的列中列出所有单元格?
- c# - 在 Blazor 中本地化 DateTime(和数字)
- python - 在 python 3 中解析 Json,从 API 获取电子邮件
- python - 如何使用用户输入停止while循环?
- reactjs - 如何从formik datePicker将dateFormat发送到api
- ios - 找不到 GoogleMobileAds.h 文件
- django - CORS 策略已阻止从源 [domain] 访问 [Img Link] 上的图像