NGINX + WordPress给ERR_TOO_MANY_REDIRECTS
我一直在尝试使用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目录下的静态文件时,它们没有任何问题。那里没有重定向错误。
无论何时访问wp-admin
,WordPress通常会将http
会话重定向到https
。这可以使用wp-config.php
中的FORCE_SSL_LOGIN
和FORCE_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;
}
}
完美解决。不向第二台服务器传送SSL终止信息导致此问题。十分感谢你的帮助。 – mithilesh
这是网站仅运行'http',或者你有'https'在它前面的终结? –
哦,是的,我忘记了包含那条信息。我的主服务器启用了https,然后通过普通的http将请求代理到此服务器。不知怎的,这可能是一个问题吗? – mithilesh