You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Toolbox运行kitematic/hello-world-nginx遇403 Forbidden问题求助

解决Docker Toolbox中Nginx容器外部访问403错误的方法

我来帮你搞定这个403 Forbidden的问题!从你描述的情况来看,虚拟机内部curl能正常获取页面,但外部浏览器访问失败,大概率是访问权限限制或者网络层面的拦截,下面一步步来排查解决:

1. 检查Windows防火墙设置

Windows防火墙可能默认阻止了对Docker Toolbox虚拟机IP(192.168.99.100)80端口的访问:

  • 打开Windows Defender防火墙 -> 高级设置
  • 点击入站规则 -> 新建规则
  • 选择端口,下一步,输入80,选择TCP
  • 允许连接,下一步,勾选所有网络类型(域、专用、公网)
  • 给规则命名(比如“允许Docker Nginx 80端口访问”),完成后测试浏览器访问

2. 验证Nginx容器的访问控制配置

有些Nginx镜像会默认限制仅允许本地访问,你可以进入容器检查配置:

  • 先获取容器ID:docker ps,找到kitematic/hello-world-nginx对应的ID
  • 进入容器:docker exec -it <你的容器ID> /bin/sh(这个镜像可能用的是sh而非bash)
  • 查看Nginx默认配置文件:cat /etc/nginx/conf.d/default.conf
  • 检查server块里是否有类似allow 127.0.0.1; deny all;的规则,如果有,修改为allow all;或者允许192.168.99.0/24网段:
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        allow all; # 替换原来的限制规则
    }
    
  • 重启Nginx生效:nginx -s reload,然后回到浏览器测试

3. 确认VirtualBox的端口转发设置

虽然Docker Toolbox通常会自动处理端口映射,但可以手动验证:

  • 打开VirtualBox,找到default虚拟机,右键选择设置 -> 网络
  • 切换到端口转发标签,检查是否有一条规则:
    • 名称:随便填,比如nginx-80
    • 主机IP:留空或者填0.0.0.0
    • 主机端口:80
    • 子系统IP:192.168.99.100
    • 子系统端口:80
  • 如果没有,添加这条规则后重启虚拟机:docker-machine restart default

按上面的步骤排查后,应该就能解决浏览器访问403的问题了。

内容的提问来源于stack exchange,提问作者miuosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:30