gpt4 book ai didi

nginx - 还原当前站点可用文件

转载 作者:行者123 更新时间:2023-12-03 16:41:49 26 4
gpt4 key购买 nike

我的团队尝试更新nginx配置sites-available/mysite.com时,由于磁盘大小问题,突然间无法保存该文件,而现在该文件为空(大小为0)。有什么方法可以基于当前的nginx conf创建新的配置文件吗?自从文件被编辑以来,nginx服务器尚未重启,因此,它仍然可以正常工作,并且我们没有sites-available/mysite.com文件的最新备份,因此我更喜欢恢复内存中存在的当前配置。

谢谢你。

最佳答案

首先,在尝试进行此操作之前,请确保现在服务器上有足够的可用空间,并且还需要具有sudo权限。

查找主要的Nginx进程

您需要做的第一件事是找到Nginx的主要过程

$ ps aux | grep nginx
root 3890 0.0 0.1 124972 1424 ? Ss 06:06 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 3891 0.0 0.3 125332 3128 ? S 06:06 0:00 nginx: worker process

如您所见,我的主要nginx进程是 3890 pid。

查找内存映射表
接下来,我们需要检查该进程正在使用的内存映射
$ sudo cat /proc/3890/maps
55698ed20000-55698ee2e000 r-xp 00000000 fc:00 414469 /usr/sbin/nginx
55698f02e000-55698f030000 r--p 0010e000 fc:00 414469 /usr/sbin/nginx
55698f030000-55698f04c000 rw-p 00110000 fc:00 414469 /usr/sbin/nginx
55698f04c000-55698f06c000 rw-p 00000000 00:00 0
556990d72000-556990dd5000 rw-p 00000000 00:00 0 [heap]
7f4cfa551000-7f4cfa55c000 r-xp 00000000 fc:00 1314482 ....
7f4d01f70000-7f4d01f71000 rw-p 00000000 00:00 0
7ffde6f5e000-7ffde6f7f000 rw-p 00000000 00:00 0 [stack]
7ffde6f9a000-7ffde6f9c000 r--p 00000000 00:00 0 [vvar]
7ffde6f9c000-7ffde6f9e000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

现在会有很多输出,但是不用担心,我们主要对 [heap]部分感兴趣。内存位于 556990d72000-556990dd5000

转储堆

现在您需要转储堆。确保已安装 gdb。使用连接到流程
$ sudo gdb -p 3890

您将收到一个 (gdb)提示。现在在此提示下,使用我们前面提到的地址
(gdb) dump memory /tmp/nginx-memory 0x556990d72000 0x556990dd5000

从转储中获取字符串数据

现在我们的转储位于 /tmp/nginx-memory,现在我们需要从中获取字符串数据
$ sudo strings  /tmp/nginx-memory > /tmp/nginx-memory.str

查找Nginx配置

现在您有了内存转储。大多数配置都会有一个 http {行,现在您可以测试 /tmp/nginx-memory.str是否相同
$ grep -A 20 "http {" /tmp/nginx-memory.str
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Gzip Settings
gzip on;
gzip_disable "msie6";
--
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Gzip Settings
gzip on;
gzip_disable "msie6";

因此,请仔细查看此文件,然后恢复配置并创建一个新文件

关于nginx - 还原当前站点可用文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45852224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com