linux误删nginx.conf文件恢复方式

2024-03-04 0 413
目录
  • 1.获取nginx进程pid
  • 2.查找内存映射
  • 3.转储堆
  • 4.从转储中获取字符串数据
  • 5.查找 Nginx 配置
  • 总结

当你不小心误删或者错误操作导致nginx.conf文件丢失,而且nginx处于在住运行的状态,在这种情况下我们就可以在内存中获取配置文件。

1.获取nginx进程pid

ps -ef | grep nginx

你会得到如下输出,找到master的pid

root 19812 1 0 7月14 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 19813 19812 0 7月14 ? 00:00:26 nginx: worker process
nginx 19814 19812 0 7月14 ? 00:00:33 nginx: worker process
nginx 19815 19812 0 7月14 ? 00:01:15 nginx: worker process
nginx 19816 19812 0 7月14 ? 00:00:55 nginx: worker process
nginx 19817 19812 0 7月14 ? 00:00:04 nginx: cache manager process
root 26171 12446 0 12:56 pts/0 00:00:00 grep –color=auto nginx

如上所示,nginx的主要进程pid为19812

2.查找内存映射

安装gdb工具

yum install gdb -y

接下来我们需要检查进程正在使用哪些内存映射

cat /proc/19812/maps | grep heap
[root@loghub-server tmp]# cat /proc/19812/maps | grep heap
55e0e6760000-55e0e69c2000 rw-p 00000000 00:00 0 [heap]

可以看到有2处地方,我们只需要关注heap部分。内存位于55e0e6760000-55e0e69c2000之间。

3.转储堆

然后需要转储堆

gdb -p 19812

你会得到一个(gdb)提示。现在在这个提示下使用我们之前记下的地址,地址前需要加0x

(gdb) dump memory /tmp/nginx-memory 0x55e0e6760000 0x55e0e69c2000

4.从转储中获取字符串数据

strings /tmp/nginx-memory > /tmp/nginx-memory.str

5.查找 Nginx 配置

现在有了内存转储。大多数配置都会有http {一行,现在可以测试下/tmp/nginx-memory.str

grep -A 20 \”http {\” /tmp/nginx-memory.str
[root@loghub-server tmp]# grep -A 50 \”http {\” /tmp/nginx-memory.str
http {
log_format main \’$remote_addr – $remote_user [$time_local] \”$request\” \’
\’$status $body_bytes_sent \”$http_referer\” \’
\’\”$http_user_agent\” \”$http_x_forwarded_for\”\’;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#proxy_temp_path /etc/nginx/temp_dir;
#proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=1g;
#proxy_cache_path /etc/nginx/cache_dir levels=1:2 keys_zone=imgcache:500m max_size=1g inactive=1d use_temp_path=off;
proxy_cache_path /etc/nginx/conf.d/cache levels=1:2 keys_zone=my_zone:100m inactive=3600s max_size=1g;

自己复制出来或者修改下格式之类的,就可以了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Linux服务器 linux误删nginx.conf文件恢复方式 https://www.u-9.cn/server/linux/182970.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务