如何实现从外网访问本地电脑部署的Directus 9服务?
公网访问本地Directus服务配置步骤
你猜测的http://xx.xxx.xx.xx/yyy.yyy.y.yy格式的访问地址是无效的,公网访问本地服务需按以下步骤配置:
1. 确认公网IP属性
首先验证你拿到的公网IP是否为运营商分配的真实公网IP:
- 登录你家路由器管理后台,查看WAN口显示的IP地址
- 和你查询到的
xx.xxx.xx.xx做对比,二者一致为真实公网IP;如果不一致说明运营商给你分配的是内网IP,需要先联系运营商申请公网IP,一般说明是家用监控需求都会通过。
2. 配置路由器端口映射(仅真实公网IP场景需要)
登录路由器后台找到「虚拟服务器/端口映射/NAT配置」入口,新增映射规则:
- 外部端口:填你对外提供服务的端口,没有特殊需求可填80、8080等未被运营商封禁的端口
- 内部IP:填你本地电脑的私网IP
yyy.yyy.y.yy - 内部端口:填你本地Nginx监听的端口,如果你没有修改过Nginx默认配置则填80,也可以直接填Directus的服务端口8055
- 协议选择TCP,保存后重启路由器生效。
3. 调整本地防火墙与服务配置
- 确认本地电脑防火墙的端口入站规则,对应Nginx/Directus的端口允许规则要适配所有网络类型,不要仅开放专用网络权限
- 修改Nginx配置,确保server块没有绑定127.0.0.1,参考配置如下:
server { listen 80; server_name xx.xxx.xx.xx; location / { proxy_pass http://localhost:8055; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
- 修改Directus根目录的
.env配置,将PUBLIC_URL参数改为对外访问地址:PUBLIC_URL="http://xx.xxx.xx.xx",避免静态资源加载失败。
4. 访问测试
配置完成后,外网设备断开你家WIFI,用流量访问http://xx.xxx.xx.xx即可,如果你映射的外部端口不是80,需要在地址后加端口号,比如外部端口为8080则访问http://xx.xxx.xx.xx:8080。
无公网IP的替代方案
如果无法拿到公网IP,可以使用内网穿透工具,比如frp、ngrok、cpolar等,将本地Nginx/Directus端口映射到公网,拿到穿透工具提供的公网访问地址即可正常访问。
如果你的公网IP是动态的,每次路由器重启都会变更,可以额外配置DDNS动态域名解析,绑定域名即可不用每次换IP都修改访问地址。
内容的提问来源于stack exchange,提问作者uss-code
相关产品推荐
相关产品推荐

