NGINX - encaminha tudo para um script php

2

Estou tentando encaminhar todas as solicitações para o mesmo script php.

Eu criei esta configuração:

server {
    listen 80;
    server_name example.com;

    root /var/www/html;

    index api.php;

    location / {
        try_files $uri /api.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index api.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Enquanto funciona, ainda permite acesso direto aos recursos, se o $ uri correto for fornecido.

Se eu tentar alterar o primeiro bloco de localização para isso:

location / {
    try_files /api.php$is_args$args =404;
}

Não funciona, sempre retorna 404.

    
por guidev 06.01.2017 / 20:18

1 resposta

1
server {
    server_name example.com;

    root "/var/www/html";

    location / {
        include "fastcgi_params";
        fastcgi_param SCRIPT_FILENAME $document_root/api.php;
        fastcgi_param SCRIPT_NAME api.php;
        fastcgi_index api.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Se o objetivo é encaminhar todas as solicitações para um único script PHP e se esse script PHP único for conhecido antecipadamente pelo seu nome, então não precisamos de um bloco de localização separado. Apenas um bloco de localização que envia todas as solicitações para esse script PHP conhecido é suficiente.

fastcgi_split_path_info não é necessário, quando o script PHP a ser executado não é conhecido antecipadamente e está disponível apenas como parte do URI.

Além disso, try_files $uri =404 não é necessário, pois esse script PHP já está disponível em um local fixo / conhecido.

    
por 07.01.2017 / 07:56

Tags