Qual é o propósito da instrução mágica try_files?

1

A manutenção do sistema que foi configurado por terceiros encontrou o seguinte na configuração nginx vhost

server {
    listen *:80;

    listen *:443 ssl;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    server_name <server-name-here>;

    root   /path/to/vhost/root;

    index index.html index.htm index.php index.cgi index.pl index.xhtml;

    error_log /var/log/ispconfig/httpd/domain-name/error.log;
    access_log /var/log/ispconfig/httpd/domain-name/access.log combined;

    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location /stats/ {
        index index.html index.php;
        auth_basic "Members Only";
        auth_basic_user_file /path/to/passwd/file;
    }

    location ^~ /awstats-icon {
        alias /usr/share/awstats/icon;
    }

    location ~ \.php$ {
        try_files /0816f18c2383162111fc93fe015c1607.htm @php;
    }

    location @php {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9010;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;

        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

    client_max_body_size 24M;

    location / {
       try_files $uri $uri/ /index.php?$args;
       add_header 'Access-Control-Allow-Origin' '*.domain.name';
       add_header 'Access-Control-Allow-Methods' 'GET, POST';

       satisfy any;
       allow <white-listed-IPs>;
       deny all;
            auth_basic "Members Only";
            auth_basic_user_file /path/to/passwd/file;

            location ~ \.php$ {
                try_files /0816f18c2383162111fc93fe015c1607.htm @php;
            }
    }

    location ~* ^.+.(css|js|jpg|jpeg|png|gif|ico|woff|ttf|otf|eot|svg|pdf)$ {
        access_log off;
        expires 1h;
    }
}

que parece bastante simples para mim, exceto esta declaração try_files /0816f18c2383162111fc93fe015c1607.htm @php; . Não há arquivo com esse nome no disco. Aparentemente isso é algum tipo de mágica usada para monitorar ou trocar o vhost, dificultando o uso do google, já que o nome do arquivo é uma string totalmente aleatória.

Alguma ideia do que é usado para isso?

P.S. Estamos falando de máquina Linux, também tem ISPConfig instalado, não tenho certeza se isso é importante. A versão do Nginx foi 1.2.0 quando peguei a máquina.

    
por Anton Boritskiy 19.05.2016 / 13:17

1 resposta

1

Um uso legítimo dessa entrada try_files é facilitar a entrada do site no modo de manutenção. Uma vez que este arquivo é criado no servidor web, nenhum script PHP é executado, somente aquele arquivo .htm específico é exibido.

Durante a manutenção, seria mais fácil executar atualizações complexas sem fazer com que o site quebre de maneiras inesperadas.

O nome do arquivo é escolhido para ser assim, para que não colida com nenhum outro arquivo .htm no site.

No entanto, essa maneira de implementar o modo de manutenção interromperia todas as outras páginas de conteúdo não HTML durante o período de manutenção, como feeds RSS, sitemaps e APIs JSON.

    
por 19.05.2016 / 18:25

Tags