nginx: Subdomain ohne Umleitung in Unterverzeichnis umschreiben

nginx: Subdomain ohne Umleitung in Unterverzeichnis umschreiben

Ich möchte, dass nginx alle http://api.example.org/xyzAnfragen umschreibt, damit sie tatsächlich example.org/api/xyzim Hintergrund aufgerufen werden. Der schwierige Teil ist auch, dass ich CodeIgniter verwende. Anstatt also ein PHP-Skript unter /xyz/index.php zu laden, muss es mit dem XYZ-Controller auf /index.php von CodeIgniter verweisen. Im Moment habe ich es so eingerichtet:

if ($host = "api.example.org") {
    rewrite ^(.*)$ http://example.org/api$1 permanent;
}

...aber das führt zu einer spürbaren Umleitung im Browser. Ich möchte, dass das Umschreiben nahtlos/hinter den Kulissen erfolgt. Also habe ich Folgendes versucht:

if ($host = "api.example.org") {
    rewrite ^(.*)$ /api$1 last;
}

Aber das gibt mir den Fehler „Keine Eingabedatei angegeben“. :( Hat schon mal jemand versucht, eine Subdomäne in einen Codeigniter-Controller auf Nginx umzuschreiben?

Danke!

Antwort1

Ich habe den ganzen Tag damit verbracht, das herauszufinden, und am Ende war es wirklich einfach, pfui. Was ich letztendlich gemacht habe, war:

location ~* \.php$ {
    ...
    if ($host ~ ^api\.) {
        set $api "/api";
    }
    fastcgi_param REQUEST_URI $api$request_uri;
    ...
}

Juhu! Wenn irgendjemand daran etwas möglicherweise Falsches findet, lasst es mich bitte wissen! Scheint aber zu funktionieren.

verwandte Informationen