三、宝塔面板:去掉全站门禁(推荐方案)
体验版要对公众开放,工作区几十个页面都在门禁后面,逐个加白名单不现实。推荐:全站公开,只给后台管理页保留密码。
- 宝塔面板 → 网站 → shipstrade.com.cn → 设置 → 配置文件
- 找到 server 块里的
auth_basic 与 auth_basic_user_file 两行,先复制保存 user_file 的路径,再把这两行删除或加 # 注释
- 在 server 块开头(server_name 之后)粘贴安全加固规则(必须放在 PHP 处理 location 之前,否则 PHP 规则会先命中):
# ===== 安全加固(去掉门禁后必加,放在 PHP 处理 location 之前) =====
location = /ship-accounts.json { deny all; } # 账号数据(含明文密码)禁止下载
location = /shared-notices.json { deny all; } # 通告数据禁止直接下载
location ~ ^/uploads/.*\.php$ { deny all; } # 上传目录禁止执行 PHP(防 webshell)
- 在 server 块末尾(最后一个
} 前)粘贴下面内容,路径换成第 2 步复制的实际路径:
# ===== 后台管理页单独加密(其余全站公开) =====
location = /hq-admin.html { auth_basic "Restricted"; auth_basic_user_file /www/server/panel/vhost/nginx/.htpasswd; }
location = /orders-admin.html { auth_basic "Restricted"; auth_basic_user_file /www/server/panel/vhost/nginx/.htpasswd; }
location = /site-config-admin.html { auth_basic "Restricted"; auth_basic_user_file /www/server/panel/vhost/nginx/.htpasswd; }
location = /ship-mgmt-dept.html { auth_basic "Restricted"; auth_basic_user_file /www/server/panel/vhost/nginx/.htpasswd; }
location = /ship-setup.html { auth_basic "Restricted"; auth_basic_user_file /www/server/panel/vhost/nginx/.htpasswd; }
- 保存(宝塔自动校验 nginx 配置,语法错会拒绝保存)→ 网站 → 重启 Nginx
⚠ 若仍想保留全站门禁:也可用 location = /login.html { auth_basic off; } 逐个放行,但工作区 60+ 页面容易漏,访客点进去还是 401,强烈不推荐。
🔒 为什么必须加安全加固:已实测 upload.php 无任何鉴权、可匿名上传文件,若上传目录能执行 PHP 等于把服务器权限交给任何人;ship-accounts.json 存着全部船名+明文密码,门禁去掉后不挡就会泄露;notices-api.php 发布接口无校验,任何人都能发通告。三条加固规则 5 分钟配好,不配等于裸奔。
四、上传后验证(务必用无痕窗口)
⚠ 你自己的浏览器保存过门禁密码,打开页面不会弹 401,测不出真实访客效果。请用 Chrome/Edge 无痕窗口 或手机流量(非 WiFi 缓存)测试。
- 无痕打开
https://shipstrade.com.cn/trial.html → 填船名+邮箱 → 开通
- 页面显示船名 + 密码 + 有效期 7 天
- 点"🔐 立即登录工作区" → 登录页船名自动填好
- 输入密码 → 点"⛵ 登船" → 进入工作区(不再 401、不再没反应)
- 随便点几个岗位页、文件夹、通知,确认正常
✓ 验证标准:全程无 401 弹窗、无报错,登录失败时能看到"密码错误/船名未注册"等明确提示。