我不确定是否要将其发布到 wordpress stackexchange 或这里,但由于这更多的是服务器配置,我假设在这里。
我的问题是配置问题。这是我的设置:
Docker 实例在端口 80 上的内部 docker IP 地址上运行 Docker 实例运行 nginx,它是反向代理(面向公众的端口 80),反向代理(面向公众)通过内部 ip 地址将 wordpress 与 docker 实例一起提供给互联网
这个问题比较特殊,因为在查看主页或其他页面(关于或其他页面)时,它运行正常。只有登录 wordpress 时才会出现此问题。
- 我去https://example.com/wp-admin并登录
- 它会将我重定向到https://example.com/wp-login.php登录后(信息正确或不正确,无消息)
- 从那时起,每次我尝试登录时,它都会一次又一次地循环,没有任何迹象表明登录已处理。没有“密码不正确”,只是显示登录页面。
从浏览器停止重定向循环(无限循环)的角度来看,这并非重定向循环,它只是无法正确处理登录。换句话说,我可以查看页面并提交登录,但它无法处理它。
我尝试禁用所有插件,甚至创建一个没有插件的全新安装 - 我仍然遇到同样的问题。这让我相信这要么是我的 nginx 配置问题,要么是 wordpress 本身的问题 - 我现在还不确定。
我使用此设置,以便我可以轻松地将新网站添加到服务器(这是一个专用服务器),如果需要,我可以重新启动各个网站,而无需关闭使用反向代理托管的所有网站。
mysql 可以正常访问,因为帖子和页面加载正常,没有问题。只有在尝试登录时才会出现此问题。
我的反向代理配置:
server {
listen 80;
listen [::]:80;
server_name _;
return 444;
}
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-Port 80;
proxy_set_header Host $host;
proxy_pass http://172.17.0.4:80;
}
port_in_redirect off;
}
我的 WordPress nginx 配置:
server {
listen 80;
server_name example.com;
index index.php index.html default.php default.html index.htm deafult.htm;
root /mrparker;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
server_tokens off;
port_in_redirect off;
}
答案1
您很可能已设置了登录和管理的默认设置。
// 安全登录和管理 define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
如果您允许不安全(非 HTTPS)登录,您应该能够通过 HTTP 登录。但是,您还需要允许不安全(非 HTTPS)管理通过 HTTP 访问管理页面。
最好设置 HTTPS 并安全地访问这些功能。您可以使用自签名证书、Let's Encrypt 的证书或来自任意数量的证书颁发机构的证书。