启用 $cfg['forcessl'] = true 仅拒绝 http 请求而非自动跳转,报“access denied: insecure connection”是因 phpmyadmin 未从 $_server 读到 https 标识,常见于反代未透传 x-forwarded-proto 或 https 参数。
直接启用 $cfg['forcessl'] = true 不会自动跳转 https,它只拒绝 http 请求——如果你没配对 web 服务器的协议头透传,用户会看到 “access denied: insecure connection”,而不是跳转。
为什么启用了 ForceSSL 却报 “Access denied: insecure connection”
这个错误不是配置失败,而是 phpMyAdmin 成功拦截了 HTTP 请求。根本原因是它从 PHP 的 $_SERVER 环境中读不到 HTTPS 标识,常见于:
- Nginx 反代时漏了
proxy_set_header X-Forwarded-Proto $scheme;和fastcgi_param HTTPS on; - Apache 虚拟主机里没开
SSLEngine on,或没设SetEnvIf X-Forwarded-Proto https HTTPS=on - 用 CDN 或负载均衡时,
X-Forwarded-Proto被清空或伪造,而 phpMyAdmin 默认不校验该头的可信性
Nginx 下 HTTPS 跳转失效或无限重定向
典型表现是地址栏反复闪现 http→https→http,最终触发 ERR_TOO_MANY_REDIRECTS。这不是 phpMyAdmin 自身逻辑问题,而是 Nginx 和它的协议判断冲突:
- 删掉 Nginx 配置里手动写的
return 301 https://$host$request_uri;——让 phpMyAdmin 控制跳转,避免双重干预 - 确保
location /phpmyadmin块内同时存在:proxy_set_header X-Forwarded-Proto $scheme;和fastcgi_param HTTPS on; - 如果 phpMyAdmin 部署在子路径(如
/pma/)且走 CDN,必须显式设置$cfg['PmaAbsoluteUri'] = 'https://example.com/pma/';,否则重定向会拼出 HTTP 地址
宝塔面板用户别绕过代理直连 HTTPS 子域名
宝塔的 phpMyAdmin 是嵌入式部署,依赖后台 Token、Referer 白名单和 CSRF 校验。你若单独配一个 phpmyadmin.example.com 并启用 SSL,大概率遇到 403、502 或空白页:
- 正确做法:进宝塔 → 网站 → SSL 页面,先给主站(如
example.com)配好证书;再进 → 数据库 → phpMyAdmin 设置,勾选「允许通过 HTTPS 访问」 - 检查生成的 Nginx 配置是否含
location /phpmyadmin { proxy_pass http://127.0.0.1:888; ... proxy_set_header X-Forwarded-Proto $scheme; } - 切勿用
alias或软链把/www/server/phpmyadmin暴露到网站根目录下——会暴露config.inc.php,且 Session 路径错乱
最关键的细节常被忽略:ForceSSL 不处理证书有效性,也不管浏览器是否信任你的证书。如果你用自签名证书或私有 CA,浏览器会在建立 TLS 连接前就报 ERR_SSL_PROTOCOL_ERROR,请求压根到不了 phpMyAdmin——这时查配置毫无意义,得先解决证书信任链。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











