未重启Nginx时恢复误删的无扩展名content配置文件求助
恢复误删的Nginx配置文件(未重启Nginx)
从Nginx进程内存提取配置
Nginx启动后会把配置加载到内存,哪怕原文件删除,进程里还可能保留着相关内容,试试以下步骤:
- 先找到Nginx主进程PID:
ps aux | grep nginx | grep master - 将进程内存转储为core文件:
gcore <你的PID> - 从core文件中过滤可读文本,查找和
content相关的配置片段:
要是记得配置里的关键词(比如域名、location规则),直接替换strings core.<你的PID> | grep -A 20 -B 5 "content"content搜索效率更高。
扫描系统临时文件与文件系统缓存
- 检查Nginx默认缓存目录
/var/cache/nginx,排查是否有配置残留:find /var/cache/nginx -type f -exec strings {} \; | grep -i "content" - 用
debugfs查找已删除文件(注意:需卸载对应分区或用Live CD启动,避免损坏文件系统):- 卸载配置所在分区(比如
/etc/nginx在根分区,就得用Live系统启动操作) - 列出已删除文件并筛选
content:debugfs -R 'lsdel' /dev/sdaX | grep content - 找到对应inode编号后恢复文件:
debugfs -R 'dump <inode编号> /root/recovered_content' /dev/sdaX
- 卸载配置所在分区(比如
检查系统自动备份或版本控制
- 查看
/etc/nginx目录下是否有RPM包更新留下的备份文件:ls -la /etc/nginx | grep -E "\.rpm(new|save)" - 要是之前用Git等工具管理过配置,直接从仓库拉取即可。
反向推导配置(最后手段)
如果以上方法都无效,只能根据当前Nginx运行状态重新编写配置:
- 用
nginx -V查看编译参数,确认默认配置路径和include规则 - 查看Nginx当前监听的端口:
netstat -tulpn | grep nginx - 结合站点的响应内容、跳转规则,回忆之前的配置逻辑,写完后用
nginx -t验证配置合法性,没问题就重载Nginx:nginx -s reload
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

