在宝塔面板(BT Panel)中为没有域名的项目配置 Nginx 站点,核心思路是利用 IP + 端口或者自定义 Server_Name 来绕过域名绑定的限制。
通常我们习惯用 www.example.com 作为站点绑定,但如果没有域名,或者只是内网测试、临时部署,完全可以通过以下几种方式实现访问。以下是几种常用且稳定的方案,按推荐程度排序:
方案一:直接通过 IP + 端口访问(最简单,无需修改 Nginx 配置)
如果你只是想快速让项目跑起来,并且不介意通过 http://服务器IP:端口 的方式访问,这是最省事的方法。
-
创建站点时跳过域名输入:
- 在宝塔“网站” -> “添加站点”时,不要填域名,或者填入一个占位符(如
localhost)。 - 注意:新版宝塔可能强制要求填写域名。如果遇到这种情况,请使用方案二或方案三。
- 在宝塔“网站” -> “添加站点”时,不要填域名,或者填入一个占位符(如
-
如果宝塔强制要求域名:
- 你可以先随便填一个域名(比如
temp.test),然后进入该站点的 Nginx 配置文件。 - 找到
server_name这一行,将其改为_或者*(表示匹配所有主机头),或者直接注释掉。 - 保存后,重启 Nginx。
- 此时,你可以通过
http://你的服务器IP:80(或其他监听端口)直接访问项目。
- 你可以先随便填一个域名(比如
优点:零配置,即时生效。
缺点:每次访问都要带 IP 和端口,体验较差;如果服务器有多个站点,可能会冲突(除非每个项目用不同端口)。
方案二:使用“泛解析”或“通配符”域名(推荐,适合多项目隔离)
如果你有多个无域名项目,或者希望看起来更专业,可以创建一个“虚拟域名”,然后在本地 hosts 文件中映射,或者直接在 Nginx 中设置匹配规则。
步骤:
-
添加站点:
- 在宝塔中添加一个新站点,域名随意填,例如
myproject.local或test-nodejs.app。 - 确保勾选了 PHP 版本(如果是静态项目可不选)、根目录等基本信息。
- 在宝塔中添加一个新站点,域名随意填,例如
-
修改 Nginx 配置文件:
- 进入该站点的 设置 -> 配置文件。
- 找到
server块中的server_name指令。 - 将其修改为:
server_name _; # 或者 server_name *.local;这表示该站点将响应任何未被其他站点明确匹配的请求。
-
(可选)设置默认站点:
- 如果你希望这个无域名项目成为服务器的“默认首页”(即访问 IP 时自动跳转到此项目),可以在宝塔后台的 软件商店 -> Nginx -> 设置 -> 默认站点 中选择该项目。
- 或者,在 Nginx 主配置
/etc/nginx/nginx.conf中,将include /www/server/panel/vhost/nginx/*.conf;之前的第一个站点设为默认。
-
访问方式:
- 如果你在本机测试,编辑本地电脑的
hosts文件(Windows:C:WindowsSystem32driversetchosts,Mac/Linux:/etc/hosts),添加一行:你的服务器IP myproject.local - 然后通过浏览器访问
http://myproject.local即可看到项目内容。
- 如果你在本机测试,编辑本地电脑的
优点:可以使用标准 URL 格式,便于开发调试;支持 HTTPS(需自签证书或 Let’s Encrypt 免费证书,但无域名无法申请正式证书,只能自签)。
缺点:需要修改 hosts 才能完美体验;网络用户无法通过此方式访问(除非他们也有相同的 hosts 配置或使用 DDNS)。
方案三:使用子域名或二级域名(适合已有域名但未备案或未解析)
如果你已经有一个域名,但某些子项目不想单独买域名,可以利用现有域名下的子域名。
-
添加站点:
- 在宝塔中添加站点,域名为
app.yourdomain.com。 - 确保 DNS 服务商中已添加该子域名的 A 记录指向服务器 IP。
- 在宝塔中添加站点,域名为
-
正常配置:
- 按照常规流程配置 Nginx、SSL 证书等。
- 这种方式完全等同于有域名站点,无需特殊处理。
优点:标准化,支持 SSL,易于维护。
缺点:仍然依赖域名基础设施。
方案四:反向XX到本地服务(适合 Node.js/Python/Go 等非传统 Web 项目)
如果你的项目不是放在静态目录下,而是运行在某个端口上(如 Node.js 的 3000 端口),你可以用宝塔 Nginx 做反向XX。
-
启动你的项目:
- 假设你的项目在
http://127.0.0.1:3000运行。
- 假设你的项目在
-
在宝塔中添加站点:
- 域名填
localhost或任意名称。 - 根目录可以不填或指向空文件夹。
- 域名填
-
修改 Nginx 配置文件:
server { listen 80; server_name _; # 匹配所有 location / { proxy_pass http://127.0.0.1:3000; 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 Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } -
访问:
- 通过
http://服务器IP直接访问,Nginx 会将请求转发给后端服务。
- 通过
优点:非常适合现代前端框架(Vue/React)、Node.js、Docker 容器化应用。
缺点:需要理解反向XX原理。
注意事项与合规提醒
-
防火墙与安全组:
- 确保云服务器厂商(阿里云、腾讯云、华为云等)的安全组中放行了对应端口(通常是 80、443 或自定义端口)。
- 宝塔面板自身的防火墙也要放行相应端口。
-
HTTPS 问题:
- 没有合法域名,无法申请 Let’s Encrypt 等免费 SSL 证书。
- 如果需要 HTTPS,只能使用自签名证书,浏览器会提示“不安全”,仅适用于内网测试。
- 生产环境强烈建议使用真实域名并备案(中国大陆地区)。
-
SEO 与缓存:
- 无域名站点对搜索引擎不可见,不影响 SEO。
- 如果使用了 CDN,CDN 通常需要绑定域名,无域名情况下无法享受 CDN 提速。
-
安全性:
- 避免将敏感信息暴露在通过 IP 直接访问的项目中。
- 建议为宝塔面板设置强密码,并修改默认端口(如 8888)以提高安全性。
总结
- 最快上手:用
http://IP:端口直接访问。 - 最佳开发体验:添加站点 + 修改
server_name _+ 本地 hosts 映射。 - 生产环境推荐:务必注册域名并完成备案,使用正规域名部署,确保安全性和可访问性。
根据你的具体场景选择合适的方式即可。
云技术博客