我有一个 kubernetes 集群,配置如下:
nginx+wp[:5050]<-- 重定向 307 /wpnginx[:80:443]/pma rev_proxy -->nginx+pma[:5000]
所有服务共享一个公共的外部 metallb IP。我对此配置有几个问题:
nginx+wordpress 服务器正在监听配置为使用 SSL 的非标准端口 5050,因此当我尝试通过 METALLB_IP:5050 直接连接到该服务器时出现错误“纯 HTTP 请求已发送至 HTTPS 端口”这是意料之中的,因为浏览器无法知道服务器正在等待 https 请求。我尝试通过在 nginx+wordpress 配置中添加以下行来解决这个问题:
error_page 497 301 =307 https://$host:$server_port$request_uri;
它解决了协议错误的问题,但又引入了新的问题:现在,当我尝试通过 METALLB_IP:5050/wp-admin 访问我的 wordpress 管理面板时,我得到了'错误太多'- 我猜是因为 wp-admin 自己重定向,导致无限循环。我尝试将其添加define( 'REDIRECTION_DISABLE', true );
到我的 wp-config.php,但错误仍然存在。注意:此服务只允许打开一个端口 [:5050]!我已经使用以下块设置了 phpmyadmin 的反向代理:
location /phpmyadmin/ {
proxy_pass https://phpmyadmin-service:5000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
但在我输入我的名字和密码并点击“Go”后,我的 uri 变成https://METALLB_IP/index.php
了“404 未找到”因为我的 nginx+phpmyadmin 服务器监听的是端口 5000,而不是 80/443!我还应该提一下,这个错误只有在尝试通过反向代理连接时才会发生,如果我指定 METALLB_IP:5000 进行连接,一切都会正常。
如能提供任何建议或与文档相关部分的链接,我们将不胜感激!
编辑:我现在有一个针对 phpmyadmin 反向代理的半成品解决方案:如果我将其添加$cfg['PmaAbsoluteUri'] = '/phpmyadmin';
到我的 config.inc.php,METALLB_IP/phpmyadmin 登录/注销就会开始工作!但此解决方案的缺点是,现在通过 METALLB_IP:5000 直接连接的登录会出现此错误:“无法设置会话 cookie。也许您使用 HTTP 而不是 HTTPS 来访问 phpMyAdmin。”此问题可能与#16496
我当前的 phpmyadmin 5.0.4 配置:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['host'] = "mysql-service";
$cfg['Servers'][$i]['port'] = "3306";
$cfg['Servers'][$i]['user'] = "mysql";
$cfg['Servers'][$i]['password'] = "mysql";
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['PmaAbsoluteUri'] = '/phpmyadmin';
答案1
对于 WordPress,您需要在 WordPress 配置中添加以下项目:
define('WP_HOME', 'https://example.com`);
define('WP_SITEURL', 'https://example.com');
这将让 WordPress 知道您在浏览器中用来访问网站的 URL 是什么。将其替换example.com
为您的域名。
对于 PHPMyAdmin,请尝试删除配置之外的所有内容proxy_pass
。至少在反向代理情况下,我让 PHPMyAdmin 以这种方式工作。