Nginx - Bedingter Proxy_Pass zu PHP

Nginx - Bedingter Proxy_Pass zu PHP

Ich habe die folgende Konfiguration, die im Moment nur für statische Dateien zu funktionieren scheint, aber für PHP-Dateien zu ressourcenhungrig ist.

Dies ist ein neuer Frontend-Server, auf den wir langsam PHP-Skripte und -Inhalte migrieren.

Die Logik lautet: Wenn die Datei lokal vorhanden ist (in /var/www/test.com), dann stellen Sie diese bereit. Andernfalls senden Sie sie an den Server 10.0.1.2, um den Inhalt bereitzustellen.

Bei statischen Inhalten funktioniert dies einwandfrei. (.html, .jpg, .txt usw.).

Für PHP ist diese Konfiguration jedoch zu gierig und versucht, jede PHP-Datei auszuführen, auch wenn sich die Datei nicht im lokalen Dateisystem befindet.

Gibt es eine Möglichkeit, dies nur auszuführen, wenn die Datei im lokalen Dateisystem gefunden wird, und andernfalls dieselbe Aktion wie bei statischem Inhalt auszuführen und an den 10.0.1.2-Server zu senden?

server {
    listen 80;

    server_name www.test.com;

    root /var/www/test.com;

    location / {
        try_files $uri @proxy;
    }

    location @proxy {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass https://10.0.1.2;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

Antwort1

Daher waren die try_files nicht als Duplikat zulässig, aber Folgendes funktioniert …

server {
    listen 80;

    server_name www.test.com;

    root /var/www/test.com;

    location / {
        try_files $uri @proxy;
    }

    location @proxy {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass https://10.0.1.2;
    }

    location ~ \.php$ {
        error_page 404 = @proxy;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
}

verwandte Informationen