從執行中的nginx 中找到nginx.conf
最近生產環境中的一個nginx的配置檔案被誤覆蓋了(刪除還能恢復,覆蓋恢復太困難了),google了一下,有從/proc中
dump mem 的方式,不能說完全恢復,但是全部執行的server_name都能找到,附上作者原話:
You should get something like "Binary file mem_086cb000 matches". Open this file in editor, search for config (e.g. "worker_connections" directive), copy&paste. Profit!
Update: This method isn't entirely reliable. It's based on assumption that nginx process will read configuration and don't overwrite/reuse this memory area later. Master nginx process gives us best chances for that I guess.
大意是:你應該得到一些像 “mem_086cb000” 類似的二進位制檔案 。在編輯器中開啟這個檔案,搜尋配置(例如“worker_connections”指令),複製和貼上。
更新:這個方法並不完全可靠。它是基於:假設nginx在執行過程中會讀取配置和不覆蓋/不再利用該儲存區。我想這是主nginx的程式中給了我們最好的機會。
方法如下(希望能幫到有需要的人):
找到執行中的nginx主程式號
# Set pid of nginx master process here
pid=8192
# generate gdb commands from the process's memory mappings using awk
cat /proc/$pid/maps | awk '$6 !~ "^/" {split ($1,addrs,"-"); print "dump memory mem_" addrs[1] " 0x" addrs[1] " 0x" addrs[2] ;}END{print "quit"}' > gdb-commands
# use gdb with the -x option to dump these memory regions to mem_* files
gdb -p $pid -x gdb-commands
# look for some (any) nginx.conf text
grep worker_connections mem_*
grep server_name mem_*
然後用vi或vim開啟這個mem_*檔案查詢server_name即可。
另外可以用vi -b mem_* 開啟,再用:%!xxd 轉換成16進位制,查詢server_name即可。
比較方便的是下載到本地,用一下二進位制閱讀工具來搜尋檢視,會友好一些。
From: http://serverfault.com/questions/361421/dump-nginx-config-from-running-process/436239
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-1813800/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nginx 中 nginx.conf 詳解Nginx
- Nginx官方推薦的nginx.conf標準配置Nginx
- nginx.conf的完整配置說明Nginx
- Nginx 配置檔案 nginx.conf 詳解Nginx
- windows 中nginx奇葩報錯 nginx: [emerg] unknown directive "#" in nginx/conf/nginx.conf:3WindowsNginx
- 詳解nginx伺服器的nginx.conf 中 root目錄設定問題Nginx伺服器
- Nginx 配置檔案 nginx.conf 中文詳解Nginx
- /etc/nginx/nginx.conf配置檔案詳解Nginx
- Nginx配置檔案nginx.conf中文詳解Nginx
- Nginx的nginx.conf配置檔案中文註釋說明Nginx
- [轉]Nginx 配置檔案nginx.conf的完整配置說明Nginx
- 附:Nginx配置檔案nginx.conf中文詳解Nginx
- Nginx配置檔案nginx.conf中文詳解(轉)Nginx
- nginx.conf 配置檔案詳解Nginx
- Nginx配置檔案nginx.conf中文詳解(總結)Nginx
- Nginx基礎02:配置檔案nginx.conf(Part1)Nginx
- 解決nginx: [emerg] unknown directive “stream“ in /etc/nginx/nginx.conf問題Nginx
- Nginx伺服器配置檔案nginx.conf例項詳解Nginx伺服器
- nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1Nginx
- 從反序列化到命令執行 - Java 中的 POP 執行鏈Java
- Nginx 與 PHP 的執行機制NginxPHP
- 從Fresco原始碼中找到非侵入式的答案原始碼
- 對執行中的Mysql資料庫建立從庫MySql資料庫
- 從一道執行題,瞭解Node中JS執行機制JS
- linux中nginx下禁止某目錄執行php程式LinuxNginxPHP
- 從大資料中找到那些隱藏的大智慧大資料
- nginx+php執行請求的工作原理NginxPHP
- 從原始碼的角度解析執行緒池執行原理原始碼執行緒
- Nginx執行Mono Web (ASP.NET)NginxMonoWebASP.NET
- Java中的執行緒安全:從synchronized到Lock的深入理解Java執行緒synchronized
- 伺服器模型——從單執行緒阻塞到多執行緒非阻塞(中)伺服器模型執行緒
- 從一道執行題,瞭解瀏覽器中JS執行機制瀏覽器JS
- 如何從整數陣列中找到最大和最小數陣列
- JVM中的執行緒行為JVM執行緒
- 從Hash Join的執行計劃的細節中能看到點啥
- 執行緒的中斷執行緒
- Java中的執行緒Java執行緒
- 從 JDK 原始碼角度看 java 併發執行緒的中斷JDK原始碼Java執行緒