上线前阶段

服务器检查与部署侧整改

新吴区非Docker · Nginx + PHP-FPM · 暂不切换业务代码

原则:第1~6步只读检查;变量未确认、nginx -t失败、发现root级持久化或回滚点不可用时立即停止。禁止rm -rf、chmod -R 777和在受影响目录直接git pull。

阶段总览

身份/磁盘 → Web外证据目录 → Nginx vhost → 项目路径 → PHP-FPM → 当前制品 → 安全备份 → 临时503 → 永久Nginx规则 → 隔离WebShell → 扫描持久化 → 备份治理 → 权限/PHP检查 → 凭据清单 → 候选发布包 → Go/No-Go

现在只做最小四步

  1. 备份真实Nginx vhost。
  2. 在ThinkPHP/PHP include之前增加上传/下载临时503、上传脚本永久404和敏感文件永久404。
  3. nginx -t成功后reload,验证503/404和合法图片200。
  4. 把报告WebShell和两个公开SQL移到Web外隔离目录。
location ~* ^/p/common/upload/?$ { return 503; } location ~* ^/p/download/zip/?$ { return 503; } location ~* ^/static/upload/.*\.(php[0-9]*|phtml|phar)(/|$) { return 404; } location ~* \.(sql|bak|backup|dump|env|ini|log)$ { return 404; }

代码上线并验证后,只删除两条临时503;永久保留两条404。其余完整检查仅在发现异常时展开。

先确认四个变量

SITE_ROOT实际项目根;不能是/、/www或/www/wwwroot
VHOST_FILEnginx -T显示的真实vhost文件
PHP_FPM_SERVICE真实PHP-FPM systemd服务名
PHP_USER/PHP_GROUPPHP-FPM工作进程用户/组

上线前必须修改

临时止血

上传和下载接口暂时503;通知电子菜牌和附件下载短时不可用。

Nginx永久规则

上传PHP/PHTML/PHAR 404;敏感后缀和隐藏文件404;合法图片保持200。

恶意文件

WebShell先stat/SHA再移出Web目录隔离;扫描危险扩展、内容伪装和持久化。

数据库备份

Web根SQL隔离;停止/修改仍写Web根的任务;迁移非Web路径。

权限

代码PHP只读、配置0640、仅runtime/log/upload必要可写;禁止整站777。

候选发布包

可信环境生成1219480d7发布包,Web外存放,校验SHA,暂不切换。

Nginx门禁

临时/p/common/upload/p/download/zip返回503,代码上线后移除
永久/static/upload/*.php*、phtml、phar及PATH_INFO返回404
敏感文件sql/bak/backup/dump/env/ini/log和隐藏文件返回404
验证先nginx -t,再reload,再nginx -T回读;合法图片必须200

安全停止条件

上线前Go/No-Go

必须通过证据
路径、服务、用户明确readlink/nginx -T/systemctl/ps
止血和Nginx规则生效503、404、合法图片200
恶意文件和持久化可解释隔离记录、扫描清单
公开备份清零且任务改路径find结果、cron/timer配置
权限不宽泛namei/find world-writable结果
可信候选包可回滚SHA、清单、备份、决策人

交付输出

完成上述步骤后,按Markdown手册第19节填写16项脱敏回报,再决定是否进入代码上线。完整命令、预期结果和停止条件以Markdown真源为准。