如何使用 nginx 通过 https 服务 phpmyadmin

Posted

技术标签:

【中文标题】如何使用 nginx 通过 https 服务 phpmyadmin【英文标题】:How to serve phpmyadmin over https with nginx 【发布时间】:2020-12-24 15:58:56 【问题描述】:

如何正确配置 nginxphpmyadmin?我已经配置了nginx,可以通过nginx访问phpmyadmin登录页面但是无法登录,当我尝试登录时显示Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.

我正在通过https://example.com/phpmyadmin/访问

这是 nginx 配置

location /myphpadminroute/
    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 $scheme;
    proxy_set_header host $host;
    proxy_pass_request_headers      on;

    root path_to_phpmyadmin/phpMyAdmin/;
    proxy_pass http://localhost:8080/phpmyadmin/; # apache is running on 8080

使用http://localhost:8080/phpmyadmin/https://localhost:8443/phpmyadmin/ 的apache url 时登录工作正常

我也尝试在 nginx 中使用 proxy_pass https://localhost:8443/phpmyadmin/;,但出现同样的错误。

是nginx的配置问题还是phpmyadmin的问题,我就是想不通。

编辑:cookie 路径不正确 phpMyAdmin_https=utd7tbihn9qp9r4e0f0dvj6tpo; path=/phpmyadmin/; secure; HttpOnly 如果我将 nginx 路径更改为 /phpMyAdmin/ 现在它工作正常我如何在 phpmyadmin 中更改 cookie 路径

【问题讨论】:

【参考方案1】:

终于可以正常使用了。

对于那些也面临此类问题的人来说,诀窍是将config.inc.php $cfg['PmaAbsoluteUri'] 中的变量设置为您的用户应该看到的网址

例如$cfg['PmaAbsoluteUri'] = https://example.com/myphpadminroute

【讨论】:

以上是关于如何使用 nginx 通过 https 服务 phpmyadmin的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统中设置多版本PHP共存配合Nginx服务器使用

如何让Elastic Beanstalk nginx支持的代理服务器从HTTP自动重定向到HTTPS?

Nginx如何配置多个服务域名解析共用80端口详解

带你使用Nginx实现HTTPS双向验证

怎么检查nginx 是不是支持https

AWS EC2 NGINX 节点服务器 - 如何使用 Https 而不是 Http