如何实现本地Django项目的外部网络访问?
让本地Django项目支持外部网络访问的实操步骤
1. 配置路由器端口映射(关键环节)
你的本地机器处于路由器的内网中,外部网络无法直接访问,必须通过路由器做端口转发:
- 先获取本地内网IP:Windows执行
ipconfig,Linux/macOS执行ifconfig或ip addr,找到和路由器同网段的IP(比如192.168.1.105) - 登录路由器管理后台:浏览器输入路由器网关地址(通常是
192.168.1.1或192.168.0.1,具体看路由器底部标签),输入管理员账号密码 - 找到端口转发/虚拟服务器功能(不同路由器命名可能不同,比如“NAT映射”“端口穿透”)
- 添加转发规则:
- 外部端口:选一个未被占用的端口(比如8000,若用80、443这类常用端口,可能需要管理员权限)
- 内部IP:填写刚才查到的本地内网IP
- 内部端口:填写Django运行的端口(你当前用的8000)
- 协议:选择TCP(一般TCP即可满足需求)
- 保存规则后,部分路由器需要重启生效
2. 确认Django配置无误
- 保持
ALLOWED_HOSTS = ["*"](测试阶段用通配符没问题,正式部署建议换成具体的公网IP或域名) - 启动命令必须是
python manage.py runserver 0.0.0.0:8000,确保Django监听所有网卡的请求
3. 处理公网IP的访问问题
- 查询你的公网IP:直接百度搜索“我的IP”就能获取,外部用户需要通过
公网IP:外部端口访问(比如114.XX.XX.XX:8000) - 若你的公网IP是动态的(多数家庭宽带都是),可以用动态域名解析(DDNS)服务,把动态IP绑定到固定域名,避免用户频繁更换访问地址
4. 安全提醒(务必重视)
- 禁止用
runserver做外部公开访问:runserver是Django的开发服务器,性能弱且安全防护不足,正式对外服务必须换成Gunicorn+Nginx或uWSGI+Nginx的生产部署方案 - 开放本地防火墙端口:Windows在防火墙高级设置中添加入站规则,允许8000端口的TCP请求;Linux执行
ufw allow 8000或firewall-cmd --add-port=8000/tcp --permanent(执行后重启防火墙) - 限制访问范围:如果不是公开服务,建议在路由器端口转发规则中设置IP白名单,仅允许指定外部IP访问,同时给Django后台添加登录验证
5. 验证外部访问有效性
- 用手机切换到移动数据(不要连接本地WiFi),输入公网IP+端口,检查是否能正常访问项目
- 若访问失败,依次排查:路由器端口映射规则是否正确、本地防火墙是否放行、Django服务是否正常运行、公网IP是否准确
内容的提问来源于stack exchange,提问作者Rafael MR
相关产品推荐
相关产品推荐

