Nagios

Lighttpd 發送 Nagios 命令行輸出而不是 Web 界面

  • August 8, 2012

我最近在一個執行 AmazonLinux 的 EC2 實例上安裝了 Nagios(據我了解,它基本上是 SuSe)。我正在使用lighttpdmod_cgi服務於 Web 界面。

當我導航到一個頁面時,我得到的不是實際內容,而是:

Nagios 核心 3.3.1
版權所有 (c) 2009-2011 Nagios 核心開發團隊和社區貢獻者
版權所有 (c) 1999-2009 Ethan Galstad
最後修改時間:2011 年 7 月 25 日
許可證:GPL

網站:http://www.nagios.org
用法:/usr/sbin/nagios [選項]

選項:

-v, --verify-config 驗證所有配置數據
-s, --test-scheduling 顯示預計/推薦的檢查計劃和其他
基於目前配置文件的診斷資訊。
-x, --dont-verify-paths 不要檢查圓形對象路徑 - 謹慎使用!
-p, --precache-objects 預記憶體對象配置 - 與 -v 或 -s 選項一起使用
-u, --use-precached-objects 使用預記憶體對象配置文件
-d, --daemon 以守護程序模式啟動 Nagios,而不是作為前台程序

訪問 Nagios 網站 http://www.nagios.org/ 以獲取錯誤修復、新
發布、線上文件、常見問題解答、訂閱資訊
Nagios 的郵件列表和商業支持選項。

這似乎是命令行版本的幫助文件。這是我的相關部分lighttpd.conf

alias.url = (
               "/nagios/cgi-bin" => "/usr/sbin/nagios",
               "/nagios" => "/usr/share/nagios/html"
)

$HTTP["url"] =~ "^/nagios/cgi-bin" {
       cgi.assign = ( "" => "" )
}

$HTTP["url"] =~ "^/nagios/cgi-bin" {
       auth.backend = "htpasswd"
       auth.backend.htpasswd.userfile = "/etc/nagios/passwd"
       auth.require = ( "" => (
               "method" => "basic",
               "realm" => "Nagios Access",
               "require" => "user=nagiosadmin"
               )
       )
}

$HTTP["url"] =~ "^/nagios" {
       auth.backend = "htpasswd"
       auth.backend.htpasswd.userfile = "/etc/nagios/passwd"
       auth.require = ( "" => (
               "method" => "basic",
               "realm" => "Nagios Access",
               "require" => "user=nagiosadmin"
               )
       )
}

我究竟做錯了什麼?

我想到了。對於在 Google 或其他網站上找到此內容的人:

由於某種原因,cgi-bin 目錄實際上安裝在/usr/lib64/nagios/. 我將 lighttpd 指向 Nagios 的實際執行檔,這就是它吐出幫助文件的原因。

這是需要更改的部分:

別名.url = (
"/nagios/cgi-bin" => "/usr/lib64/nagios/cgi-bin",
"/nagios" => "/usr/share/nagios/html"
)

引用自:https://serverfault.com/questions/415358