2017-05-29 3 views
0

J'ai essayé d'héberger un simple blog Wordpress en utilisant NGINX comme serveur web. Le blog est hébergé en tant que sous-répertoire sous domain_name.com/blog.NGINX + Wordpress donne ERR_TOO_MANY_REDIRECTS

Le blog principal s'ouvre correctement. Mais en essayant d'ouvrir le wp-admin sous domain_name.com/blog/wp-admin, mon navigateur affiche ERR_TOO_MANY_REDIRECTS.

Je ne sais pas si c'est un problème avec ma configuration NGINX ou ma configuration wordpress. À la suite de mon bloc serveur nginx:

server { 
    listen 80; 
    server_name <domain_name.com>; 
    root /var/www/html; 
    index index.php; 

    location /blog { 
    try_files $uri $uri/ /blog/index.php?$args; 
    } 

    location ~ \.php$ { 
    include fastcgi.conf; 
    fastcgi_intercept_errors on; 
    fastcgi_pass php; 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
    expires max; 
    log_not_found off; 
    } 
} 

Wordpress est installé sous le répertoire/var/www/html/blog. Et les valeurs de "siteurl" et "home" wp_options dans la base de données pointent tous les deux vers domain_name.com/blog.

Quelle serait une bonne façon de résoudre ce problème?

Remarques supplémentaires pouvant être utiles: Lorsque j'essaie d'accéder à des fichiers statiques dans le répertoire wp-content, ils s'ouvrent sans problème. Aucune erreur de redirection là.

+0

Est-ce que le site en cours d'exécution 'http', ou avez-vous' la fin https' devant elle? –

+0

Oh oui, j'ai oublié d'inclure cette information. Mon serveur principal a https activé, qui transmet ensuite la requête à ce serveur via HTTP. Cela pourrait-il être un problème? – mithilesh

Répondre

0

Il est habituel pour WordPress de rediriger une session http vers https lors de l'accès wp-admin. Ceci peut être contrôlé en utilisant les paramètres FORCE_SSL_LOGIN et FORCE_SSL_ADMIN dans wp-config.php.

Lorsqu'un proxy inverse termine SSL, le fait que la connexion d'origine soit supérieure à https doit être transmis à WordPress pour éviter une boucle de redirection.

Votre proxy inverse doit définir des en-têtes tels que X-Forwarded-Proto.

Vous devez modifier votre configuration nginx pour que l'indicateur HTTPS soit correctement défini pour WordPress.

Par exemple:

map $http_x_forwarded_proto $https_flag { 
    default off; 
    https on; 
} 

server { 
    listen 80; 
    server_name example.com; 
    root /var/www/html; 
    index index.php; 

    location /blog { 
     try_files $uri $uri/ /blog/index.php?$args; 
    } 

    location ~ \.php$ { 
     include fastcgi.conf; 
     fastcgi_intercept_errors on; 

     fastcgi_param HTTPS $https_flag; 
     fastcgi_pass php; 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
     expires max; 
     log_not_found off; 
    } 
} 
+0

S'entraîna parfaitement. Le fait de ne pas transmettre les informations de terminaison SSL au second serveur était à l'origine de ce problème. Merci beaucoup pour l'aide. – mithilesh