Nginx: proxy_pass condicional a PHP

Nginx: proxy_pass condicional a PHP

Tengo la configuración a continuación que parece funcionar solo para archivos estáticos por el momento, pero es demasiado ávida para archivos PHP.

Este es un nuevo servidor frontend al que estamos migrando lentamente scripts PHP y contenido.

La lógica es: si el archivo existe localmente (en /var/www/test.com), entonces sírvalo. De lo contrario, envíelo al servidor 10.0.1.2 para entregar el contenido.

Para contenido estático, esto funciona bien. (.html, .jpg, .txt, etc.).

Sin embargo, para PHP esta configuración es demasiado codiciosa e intentará ejecutar cualquier archivo .php incluso si el archivo no está en el sistema de archivos local.

¿Hay alguna manera de hacer que esto se ejecute solo si el archivo se encuentra en el sistema de archivos local y, de lo contrario, realizar la misma acción que el contenido estático y enviarlo al servidor 10.0.1.2?

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;
    }
}

Respuesta1

Entonces, try_files no se permitió como duplicado, pero lo siguiente funciona...

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;
    }
}

información relacionada