Nginx 1.2.2: Come far funzionare try_files?


11

Di recente ho aggiornato nginx alla versione 1.2.2 e la voce seguente sembra essere rotta; presumibilmente un cambiamento nella sintassi tra le versioni?

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri /index.html;
        }

Quando navigo su http://www.mysite.com/a-non-existent-url vengo reindirizzato alla pagina di errore "500 Internal Server Error". Viene effettuata la seguente voce di registro;

2012/08/13 09:20:29 [error] 18457#0: *60 rewrite or internal redirection cycle 
while internally redirecting to "/index.html", client: 10.0.14.1, server: 
mysite.com, request: "GET /a-non-existent-url HTTP/1.1", host: "www.mysite.com"

Funzionava come previsto, non riesco a trovare la sintassi corretta per questa versione. Come dovrebbe essere adesso?

AGGIORNAMENTO Configurazione completa come richiesta;

server {

    root /usr/share/nginx/mysite.com/public_html;
    index index.php index.html index.htm;
    server_name mysite.com www.mysite.com;
    access_log  /usr/share/nginx/mysite.com/logs/access_log;
    error_log   /usr/share/nginx/mysite.com/logs/error_log;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.html;
    }

    #Added for awstats
    location ^~ /awstats-icon {
            alias /usr/share/awstats/icon/;
            access_log off;
    }

    #Added for awstats
    location ^~ /awstatscss {
            alias /usr/share/doc/awstats/examples/css/;
            access_log off;
    }

    #Added for awstats
    location ^~ /awstatsclasses {
            alias /usr/share/doc/awstats/examples/classes/;                                 
            access_log off;
    }

    #Added for awstats
    # Configure /cgi-bin/scripts to go through php-fastcgi
    location ~ ^/cgi-bin/.*\.(cgi|pl|py|rb) {
            gzip off;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index cgi-bin.php;
            fastcgi_param SCRIPT_FILENAME    /etc/nginx/cgi-bin.php;
            fastcgi_param SCRIPT_NAME        /cgi-bin/cgi-bin.php;
            fastcgi_param X_SCRIPT_FILENAME  /usr/lib$fastcgi_script_name;
            fastcgi_param X_SCRIPT_NAME      $fastcgi_script_name;
            fastcgi_param QUERY_STRING       $query_string;
            fastcgi_param REQUEST_METHOD     $request_method;
            fastcgi_param CONTENT_TYPE       $content_type;
            fastcgi_param CONTENT_LENGTH     $content_length;
            fastcgi_param GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param SERVER_SOFTWARE    nginx;
            fastcgi_param REQUEST_URI        $request_uri;
            fastcgi_param DOCUMENT_URI       $document_uri;
            fastcgi_param DOCUMENT_ROOT      $document_root;
            fastcgi_param SERVER_PROTOCOL    $server_protocol;
            fastcgi_param REMOTE_ADDR        $remote_addr;
            fastcgi_param REMOTE_PORT        $remote_port;
            fastcgi_param SERVER_ADDR        $server_addr;
            fastcgi_param SERVER_PORT        $server_port;
            fastcgi_param SERVER_NAME        $server_name;
            fastcgi_param REMOTE_USER        $remote_user;
    }

    #Make sure all PHP is process by php-fpm
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    #rTorrent/wTorrent needs this
    #To loop back to the xml rpc service
        location /RPC2 {
                scgi_pass   127.0.0.1:5000;
                include     scgi_params;
                scgi_param    SCRIPT_NAME  /RPC2;
        }

}

2 ° AGGIORNAMENTO

Un registro di debug è stato pubblicato qui ( http://pastebin.com/raw.php?i=PtLwvQhW ). È abbastanza lungo, quindi l'ho fatto per evitare lo spamming di questo post.


Mostra la tua configurazione completa.
quanta

1
Aggiungi debugalla fine della error_logriga, riprova e pubblica qui il registro degli errori.
quanta

Ho aggiunto un link a un cestino nel mio post; pastebin.com/raw.php?i=PtLwvQhW
jwbensley

ls -l /usr/share/nginx/mysite.com/public_html/index.html?
maggio

Risposte:


12

Modifica la riga try_files in:

try_files $uri $uri/ /index.html =404;

Rif: https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files


1
OK un paio di stupidi punti qui da parte mia. In primo luogo index.html non esiste e dovrebbe essere index.php, che era in origine, ho una vecchia copia della configurazione che mostra che (solo eseguendo un diff me lo ha fatto notare). Non sei sicuro di come sia cambiato ?! In secondo luogo, puntare a /index.php in realtà ha fatto sì che il mio browser scaricasse il codice php grezzo che è un po 'pericoloso, ma punta a / funziona semplicemente alla grande. Quindi la linea è ora try_files $uri $uri/ / =404;Grazie mille: D
jwbensley

2
Grazie mille. Avevo rimosso il /index.htmlmio dal mio senza sapere che try_filesprovoca un reindirizzamento interno all'ultimo elemento nell'elenco se nessuno corrisponde. Ho lasciato la linea come try_files $uri $uri/ =404;funziona nel mio caso.
Ha disegnato Noakes il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.