我一直在尝试使用NGINX作为网络服务器来托管一个简单的Wordpress博客。该博客作为domain_name.com/blog下的子目录托管。
主要博客正确打开。但是当尝试在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 :(得分:1)
通常,只要访问http
,WordPress就会将https
会话重定向到wp-admin
。这可以使用FORCE_SSL_LOGIN
中的FORCE_SSL_ADMIN
和wp-config.php
设置进行控制。
当反向代理终止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;
}
}