2017-05-29 46 views
0

我一直在尝试使用NGINX作为网络服务器托管一个简单的WordPress博客。该博客作为domain_name.com/blog下的子目录托管。NGINX + WordPress给ERR_TOO_MANY_REDIRECTS

主博客正确打开。但是当试图打开domain_name.com/blog/wp-admin下的wp-admin时,我的浏览器显示ERR_TOO_MANY_REDIRECTS。

我不确定这是否与我的NGINX配置或wordpress配置有关。以下是我的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安装在/ var/www/html/blog目录下。数据库中“siteurl”和“home”wp_options的值都指向domain_name.com/blog。

什么是解决此问题的好方法?

其他注意事项可能会对你有帮助: 当我尝试访问wp-content目录下的静态文件时,它们没有任何问题。那里没有重定向错误。

+0

这是网站仅运行'http',或者你有'https'在它前面的终结? –

+0

哦,是的,我忘记了包含那条信息。我的主服务器启用了https,然后通过普通的http将请求代理到此服务器。不知怎的,这可能是一个问题吗? – mithilesh

回答

0

无论何时访问wp-admin,WordPress通常会将http会话重定向到https。这可以使用wp-config.php中的FORCE_SSL_LOGINFORCE_SSL_ADMIN设置进行控制。

当反向代理正在终止SSL时,始发连接超过https的事实必须传达给WordPress以避免重定向循环。

您的反向代理服务器应设置标头,如X-Forwarded-Proto

您需要更改nginx配置,以便为WordPress设置HTTPS标志。

例如:

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

完美解决。不向第二台服务器传送SSL终止信息导致此问题。十分感谢你的帮助。 – mithilesh