
Ich habe einen Reverse-Proxy eingerichtet, Nginx-Host -> Nagios, beide auf virtuellen Ubuntu 20.04-Rechnern. Dies ist wie eine Standard-Apt-get-Installation, nicht angepasst. Ich habe nur zum Test ein selbstsigniertes Zertifikat hinzugefügt.
192.168.254.107 - nginx 192.168.254.200 - nagios
Das Problem ist, dass das CGI-Bin nicht umgeleitet zu sein scheint und auf Nginx selbst bereitgestellt wird.
Nginx-Konfiguration
server {
listen 443 ssl;
listen 80 default_server;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 2m;
location /nagios4 {
proxy_pass https://192.168.254.200/nagios4;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Fehler
2020/12/02 05:08:53 [error] 2307#2307: *21 open() "/usr/share/nginx/html/cgi-bin/nagios4/avail.cgi" failed (2: No such file or directory), client: 192.168.254.163, server: , request: "GET /cgi-bin/nagios4/avail.cgi HTTP/1.1", host: "192.168.254.107", referrer: "https://192.168.254.107/nagios4/side.php"
2020/12/02 05:08:58 [error] 2307#2307: *21 open() "/usr/share/nginx/html/cgi-bin/nagios4/extinfo.cgi" failed (2: No such file or directory), client: 192.168.254.163, server: , request: "GET /cgi-bin/nagios4/extinfo.cgi?type=3 HTTP/1.1", host: "192.168.254.107", referrer: "https://192.168.254.107/nagios4/side.php"
2020/12/02 05:09:02 [error] 2307#2307: *21 open() "/usr/share/nginx/html/cgi-bin/nagios4/extinfo.cgi" failed (2: No such file or directory), client: 192.168.254.163, server: , request: "GET /cgi-bin/nagios4/extinfo.cgi?type=6 HTTP/1.1", host: "192.168.254.107", referrer: "https://192.168.254.107/nagios4/side.php"
2020/12/02 05:09:02 [error] 2307#2307: *21 open() "/usr/share/nginx/html/cgi-bin/nagios4/extinfo.cgi" failed (2: No such file or directory), client: 192.168.254.163, server: , request: "GET /cgi-bin/nagios4/extinfo.cgi?type=0 HTTP/1.1", host: "192.168.254.107", referrer: "https://192.168.254.107/nagios4/side.php"
2020/12/02 05:09:03 [error] 2307#2307: *21 open() "/usr/share/nginx/html/cgi-bin/nagios4/extinfo.cgi" failed (2: No such file or directory), client: 192.168.254.163, server: , request: "GET /cgi-bin/nagios4/extinfo.cgi?type=4 HTTP/1.1", host: "192.168.254.107", referrer: "https://192.168.254.107/nagios4/side.php"
Das ist mir aufgefallen, als ich versucht habe, es in einem anderen Browser zu öffnen. Es sucht nach dem Pfad auf dem Nginx-Host ...
https://192.168.254.107/cgi-bin/nagios4/status.cgi?hostgroup=all&style=hostdetail
Antwort1
Das Problem liegt wahrscheinlich an diesen beiden Zeilen Ihrer Konfiguration:
location /nagios4 {
proxy_pass https://192.168.254.200/nagios4;
Entfernen Sie entweder nagios4
die location
Anweisung, alle Standorte an den Proxy weiterzuleiten, oder
entfernen Sie das /nagios4
aus der proxy_pass
Anweisung.
Sie können aus den Fehlerprotokollen ersehen, dass nagios4
zwischen dem cgi-bin
Verzeichnis und der eigentlichen CGI-Datei Folgendes angezeigt wird extinfo.cgi
:
Antwort2
Ich habe das gleiche Problem festgestellt und es war alt, funktionierte aber immer noch für HTTP. Ich habe https nicht ausprobiert, da ich ein selbstsigniertes Zertifikat verwende
Das Hauptproblem ist, dass CGI-Bin immer noch im Nginx-Ordner/Host und nicht im Backend aufgerufen wird. Dies hat das Problem behoben und den Aufruf an das Backend umgeleitet.
location /cgi-bin/nagios3/ {
proxy_pass https://nagios.localdomain.com/cgi-bin/nagios3/;
proxy_redirect default;
}
location /nagios3/ {
proxy_pass https://nagios.localdomain.com/nagios3/;
proxy_redirect default;
}
location /nagios/ {
proxy_pass https://nagios.localdomain.com/nagios3/;
proxy_redirect default;
}