Nginx: Virtuellen Unterordner im SCRIPT_FILENAME entfernen.

G

Gast123

Gast
[gelöst] Nginx: Virtuellen Unterordner im SCRIPT_FILENAME entfernen.

Hallo zusammen,

ich habe einen TLS-gesicherten HTTPS Server unter einer Domain, sagen wir:
Code:
tls.mydomain.com
Um dort nun mehrere Webseiten / -applications betreiben zu können, habe ich diese unter dem zugehörigen Nginx-Server in verschiedene locations gepackt.
Z.B.:
Code:
tls.mydomain.com/phpmyadmin
tls.mydomain.com/nagios3
Bei letzterem musste ich, da nagios3 nicht in einem genau so genannten Ordner liegt, ein Alias auf
Code:
/usr/share/nagios3/htdocs
einführen.
Nun übergibt Nginx leider jedwede PHP-Datei unter o.g. URL als
Code:
/nagios3/<pfad>/<datei>.php
an den PHP Prozessor.
Dies führt dazu, dass dieser versucht Dateien nach dem Schema
Code:
/usr/share/nagios3/htdocs/[B]nagios3[/B]/<pfad>/<datei>.php
aufzurufen, statt, was richtig wäre,
Code:
/usr/share/nagios3/htdocs/<pfad>/<datei>.php
.
Das einzige was ich zu dem Thema gefunden habe ist die Rewrite-Funktion von nginx:
Code:
rewrite ^/nagios3(/.+\.php.*)$ $1 last;
Dies bleibt aber ohne Auswirkung. Das Dokument wird weiterhin nicht gefuden.
Das Logfile sagt dazu nur:
Code:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

Wäre für Hilfe zum Entfernen des ersten Ordners im Script-Path (In diesem Falle nagios3) sehr dankbar.

MfG

Schard

PS: Hier der location-Part - Ich habe es zuletzt auch mit der fastcgi_split_path_info Dikrektive probiert - Kein Erfolg. :(
Code:
location /nagios3 {
    alias /usr/share/nagios3/htdocs;

    access_log /var/log/nginx/nagios.access.log;
    error_log /var/log/nginx/nagios.error.log debug; #info;

    auth_basic "Nagios Restricted Access";
    auth_basic_user_file /etc/nagios3/htpasswd.users;

    index index.php;

    location /nagios3/stylesheets {
        alias /etc/nagios3/stylesheets;
    }

    location ~ ^/nagios3/.+\.php$ {
        alias /usr/share/nagios3/htdocs;
        fastcgi_split_path_info ^/nagios3(/.+\.php)(/.*)$;
        include fastcgi.conf;
        fastcgi_param SCRIPT_FILENAME /usr/share/nagios3/htdocs$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
    }

    location ~ \.cgi$ {
        alias /usr/lib/cgi-bin/nagios3;
        rewrite ^/nagios3(/.*)$ $1 last;
        rewrite ^/cgi-bin/nagios3/(.*)$ /$1;
        include /etc/nginx/fastcgi_params;
        fastcgi_param AUTH_USER $remote_user;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/nagios3$fastcgi_script_name;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }
}
 
Zuletzt bearbeitet von einem Moderator:
G

Gast123

Gast
Geschafft

Hier die Lösung:
Code:
    location /nagios3 {
        alias /usr/share/nagios3/htdocs;

        access_log /var/log/nginx/nagios.access.log;
        error_log /var/log/nginx/nagios.error.log debug; #info;

        auth_basic "Nagios Restricted Access";
        auth_basic_user_file /etc/nagios3/htpasswd.users;

        index index.php;

        location /nagios3/stylesheets {
            alias /etc/nagios3/stylesheets;
        }

        location ~ ^/nagios3/(.+\.php)$ {
            include fastcgi.conf;
            fastcgi_param SCRIPT_FILENAME /usr/share/nagios3/htdocs/$1;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
    }

    location ~ ^/cgi-bin/nagios3/(.+\.cgi)$ {
        auth_basic "Nagios Restricted Access";
        auth_basic_user_file /etc/nagios3/htpasswd.users;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/nagios3/$1;
        fastcgi_param AUTH_USER $remote_user;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }

Die CGI-location kann man leider nicht in die Nagios-location mit rein nehmen, da Nagios die Skripte direkt versucht über
Code:
/cgi-bin/nagios3
aufzurufen.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

nginx+php-fpm problem

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Samba Dateien und Ordner verschieben

nginx owncloud, php? Problem

Oben