Nginx-Umschreiberegeln – PHP für mehrere Standorte

Nginx-Umschreiberegeln – PHP für mehrere Standorte

Einer geschafft, einer noch zu erledigen! Ich verstehe alles, was vorher mit meiner Konfiguration nicht stimmte, und möchte mich noch einmal bei Cemal von Stack Overflow bedanken. /location/ zeigt jetzt index.php an.

Das neue Problem sind die Umschreiberegeln. Sie werden derzeit global festgelegt und jeder Standort muss dasselbe tun (es handelt sich um duplizierte PHP-Frontends, aber eines hat eingeschränkten Zugriff auf bestimmte Dinge).

Im Moment funktioniert die Hauptdomain.com, aber mydomain.com/test lädt das Haupt-PHP, übergibt aber nicht die Daten aus den Umschreibungen. Ich habe einen Weg gefunden, es mit Try-Dateien zum Laufen zu bringen, aber ich habe Schwierigkeiten, es mit den Ratschlägen von regex zum Laufen zu bringenhier zu finden.

So wie es ist und ohne Versuch führt das Folgende zu Fehlern, da raw_data oder general_data in nginx nicht gefunden werden können, obwohl diese Dateien vorhanden sind. Daher kann ich nur annehmen, dass es an den Umschreiberegeln liegen muss.

Ich habe die vorhandenen Umschreiberegeln geklont und ihnen das Präfix /test2/ vorangestellt, kann sie jedoch immer noch nicht finden.

27.02.2018 13:37:46 [Fehler] 31485#31485: *49483 open()

"/var/www/html/test2/general_data" failed (2: No such file or
directory), client: X.X.X.X, server: mydomain.co.uk, request: "POST
/test/weather_data?cell HTTP/1.1", host: "mydomain.co.uk", referrer:
"https://mydomain.co.uk/test2/" 2018/02/27 13:37:46 [error]
31485#31485: *49546 open() "/var/www/html/test/raw_data" failed (2: No
such file or directory), client: X.X.X.X, server: my domain.co.uk,
request: "POST /test/raw_data HTTP/1.1", host: "mydomain.co.uk",
referrer: "https://mydomain.co.uk/test2/"

das ist jedenfalls der Fehler, der mich zu dieser Schlussfolgerung geführt hat.

Hier ist meine aktuelle Konfigurationdie relevanten Teile-

}server {

    rewrite ^/raw_data$ /raw_data.php?$1 last;
    rewrite ^/test_data$ /test_data.php?$1 last;
    rewrite ^/motd_data$ /motd_data.php?$1 last;
    rewrite ^/(.*)map.common.js$ /static/js/map.common.php last;
    rewrite ^/general_data$ /general_data.php?$1 last;

    rewrite ^test2/raw_data$ /test2/raw_data.php?$1 last;
    rewrite ^test2/test_data$ /test2/test_data.php?$1 last;
    rewrite ^test2/motd_data$ /test2/motd_data.php?$1 last;
    rewrite ^test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
    rewrite ^test2/general_data$ /PMSFE/general_data.php?$1 last;



    location / {
    include /etc/nginx/mime.types;
        index index.php index.html index.htm;
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
            fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
      }
    }

    location /test2 {
    include /etc/nginx/mime.types;
    root /var/www/html/;
        index index.php index.html index.htm;
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
            fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
      }
    }

Ich wäre für jeden Ratschlag dankbar, wie ich das zum Laufen bekomme. Ich verwende Linux zum ersten Mal und versuche erst recht, etwas Substanzielles zu hosten. Leider sind die verfügbaren Nginx-Beispiele so unterschiedlich, dass es schwer ist, zu beurteilen, was auf die eigene Situation zutrifft und was nicht.

Ich habe versucht, die Umschreiberegeln an jeder Stelle einzufügen, wie ich es in einem anderen Beitrag gesehen hatte, aber dadurch wurde die Seite mydomain.co.uk beschädigt und derselbe Fehler wurde angezeigt wie bei der neuen Seite mydomain.co.uk/test2/.

Antwort1

So dumm von mir. Eins / zu wenig zu meinen Umschreibungen.

rewrite ^/test2/raw_data$ /test2/raw_data.php?$1 last;
rewrite ^/test2/test_data$ /test2/test_data.php?$1 last;
rewrite ^/test2/motd_data$ /test2/motd_data.php?$1 last;
rewrite ^/test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
rewrite ^/test2/general_data$ /PMSFE/general_data.php?$1 last;

funktioniert jetzt!

verwandte Informationen