Nginx-Konfiguration

Nginx-Konfiguration

Ich versuche, den Nginx-Webserver für meine Webanwendung einzurichten.
Unten sind die URLs, die ich möchte

www.example.com           -----> /var/www/html
www.example.com/backend/  -----> /var/www/app/backend/www
www.example.com/frontend/ -----> /var/www/app/frontend/www

Ich kann /var/www/html dazu bringen, mir die richtige PHP-Datei für example.com zu servern, aber die anderen beiden bekomme ich nicht zum Laufen.

Meine Anwendung basiert auf yii und ich habe dies als Basis verwendethttps://github.com/clevertech/YiiBackboneBoilerplate

Es gibt eine Neufassung, um index.php aus der URL zu entfernen

Wenn ich zu www.example.com/backend gehe, werde ich zu index.php weitergeleitet, aber ich habe die URL umgeschrieben, wodurch der Link zu www.example.com/backend/site/login wird.

und in den Fehlerprotokollen erscheinen wie folgt

"/var/www/app/backend/www/site/login/index.php" is not found (2: No such file or directory), client: 114.143.183.171, server: example.com, request: "GET /backend/site/login/ HTTP/1.1", host: "example.com"

Unten ist der Ausschnitt meiner Konf

set $yii_bootstrap "index.php";
location / {
           root /var/www/html/;
           index $yii_bootstrap;
}
location /backend {
         alias /var/www/app/backend/www;
         index $yii_bootstrap;
}
location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
        }
        # connect to a unix domain-socket:
        fastcgi_pass   unix:/var/run/php-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        # This file is present on Debian systems..
       include fastcgi_params;
    }

Bitte helfen Sie mir, dieses Problem zu lösen. Ich habe versucht, es zu verstehen, kann aber nicht finden, wo ich falsch liege.

Antwort1

1 Anfrage = 1 Standort

Sie müssen Ihren Regex-Speicherort duplizieren, damit für jeden Präfix-Speicherort einer gefunden wird. Das ist die effizienteste Vorgehensweise.

Haben Sie keine Angst vor dem Kopieren und Einfügen! Diese paar zusätzlichen Bytes in der Konfiguration sorgen dafür, dass die Nginx-Konfiguration lesbarer und skalierbarer wird und effizienter läuft.

location / {
    root /var/www/html;
    location ~* \.php$ {
        [...]
    }
}

location /backend/ {
    alias /var/www/html/backend/www/;
    location ~* \.php$ {
        [...]
    }
}

location /frontend/ {
    alias /var/www/html/frontend/www/;
    location ~* \.php$ {
        [...]
    }
}

verwandte Informationen