云VPS部署AdonisJS后无法通过外部远程连接访问API如何解决
AdonisJS 允许远程访问配置方法
方法1:直接对外暴露服务端口
- 第一步:修改AdonisJS监听配置
打开项目根目录下的.env文件,找到HOST配置项,将值修改为0.0.0.0:
HOST=0.0.0.0 PORT=3333
127.0.0.1是本地回环地址,只有服务器本机可以访问,修改为0.0.0.0后才会监听服务器所有网卡的请求,允许外部设备连接。
- 第二步:放行VPS的3333端口
首先放行系统防火墙端口,不同系统对应命令如下:- ufw防火墙(Debian/Ubuntu默认):
ufw allow 3333/tcp - firewalld防火墙(CentOS/RHEL默认):
firewall-cmd --add-port=3333/tcp --permanent && firewall-cmd --reload
其次要登录你所用云服务商的控制台,在安全组配置中添加入站规则,放行3333端口的TCP请求,大部分云厂商默认会拦截非常用端口的外部请求。
- ufw防火墙(Debian/Ubuntu默认):
配置完成后重启AdonisJS服务,就可以通过http://你的VPSIP:3333或者绑定的域名访问服务了。
方法2:反向代理方案(生产环境更推荐)
你目前使用的Apache反向代理方案是更适合生产环境的选择,不需要对外暴露额外端口,还可以方便配置静态资源处理、HTTPS证书等能力,补充几个优化点:
- 开发阶段不要用反向代理,直接用方法1配置即可,开发模式的热重载功能不受影响
- 生产环境不要使用
node ace serve --watch启动服务,该命令是开发专用,带有文件监听逻辑,性能低且稳定性差。生产环境部署流程如下:- 执行编译命令:
node ace build --production - 进入编译后的build目录:
cd build - 安装生产依赖:
npm ci --production - 配合pm2启动服务做进程守护:
pm2 start server.js --name adonis-api
- 执行编译命令:
- 可以在Apache配置中添加静态资源规则,AdonisJS的静态资源默认存放在public目录,直接由Apache处理可以降低Node服务的压力。
内容的提问来源于stack exchange,提问作者learningtech
相关产品推荐
相关产品推荐

