2016-11-15 2 views
0

Pour le site wordpress en utilisant nginx + php-fpm Je suis intéressé par l'application d'une plus fastcgi_read_timeout directive juste /wp-admin répertoire pour éviter les délais d'attente pour les tâches d'administration intensive de temps .Configurer nginx avec deux emplacements de fastcgi_pass php-fpm

Le seul problème avec l'exemple de code ci-dessous est lorsque je visite http://webpage.org/wp-admin je reçois 404. Lorsque je visite http://webpage.org/wp-admin/index.php les messages de la page.

En utilisant nginx add-header directive pour me aider debug je suis en mesure de déterminer que lors de la visite http://webpage.org/wp-admin nginx choisit emplacement ~ .php $ sur emplacement^~/wp-admin.

Des idées sur la façon de résoudre ce problème? Merci

location ^/wp-admin/.*.(php|phps)$ { 

    try_files $uri =404; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 
    fastcgi_keep_conn on; 

    fastcgi_read_timeout 120; 
} 



location ~ \.php$ { 

    try_files $uri =404; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 
    fastcgi_keep_conn on; 

    } 
+2

suggestion Silly. Dans votre directive 'try_files' pour le bloc'/wp-admin', vous pouvez essayer l'URI en tant que répertoire (puisque 'wp-admin' est aussi un répertoire dans Wordpress) avant de retourner 404. Donc, le modifier pour le lire 'try_files $ uri $ uri/= 404;' En termes de précédence, votre config est correcte. –

+0

Merci, votre suggestion a fonctionné. Pour comprendre pourquoi j'ai trouvé un lien utile ici http://stackoverflow.com/questions/17798457/how-can-i-make-this-try-files-directive-work. – Peter

+0

Yip, c'était l'intention. Heureux que vous l'avez fait fonctionner :) P.S Vous pouvez également utiliser curl -I http: // webpage.org/wp-admin' pour vérifier les en-têtes à partir d'une interface de ligne de commande (Unix), mais le débogage de Chrome ou Firebug est tout aussi bon. –

Répondre

1
  • J'ai testé changement try_files directive suggérée par Keenan Lawrence qui a résolu problème pour moi.

  • explication utiles de nginx try_files directive se trouve ici: how can i make this try_files directive work?

  • Pour résoudre ce problème je directive add_header, placer une directive dans chaque emplacement. Ensuite, avec le navigateur Chrome, j'ai ouvert Outils de développement, cliqué sur onglet Réseau, cliqué sur Enregistrer le journal du réseau, puis chargé le test wp-admin/page. Il y a un en-tête onglet que vous pouvez ensuite cliquer sur pour vérifier où votre page chargée. Voir aussi https://serverfault.com/questions/404626/how-to-output-variable-in-nginx-log-for-debugging

  • La configuration de travail ci-dessous inclut les directives d'en-tête pour le débogage.

    location ~* ^/wp-admin/.*.(php|phps)$ { 
    
        add_header X-debug-message "This page processed from location ^~ /wp-admin . uri = $uri ." always; 
    
        try_files $uri $uri/ =404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
        fastcgi_index index.php; 
        include fastcgi_params; 
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 
        fastcgi_keep_conn on; 
    
        fastcgi_read_timeout 120; 
    } 
    
    
    
    location ~ \.php$ { 
    
    add_header X-debug-message "This page processed from location ~ \.php uri = $uri ." always; 
    
        try_files $uri =404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
        fastcgi_index index.php; 
        include fastcgi_params; 
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 
        fastcgi_keep_conn on; 
    
        }