我安装了 Nginx、Varnish 和 PHP-fpm。然后我安装了 PHPmyAdmin 并为其创建了一个虚拟主机:
server{
listen 8080;
server_name phpmyadmin.Domain.com;
access_log /var/log/phpmyadmin.access_log;
error_log /var/log/phpmyadmin.error_log;
location / {
root /usr/share/phpmyadmin;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
include /opt/nginx/conf/fastcgi_params;
}
}
当我去时,phpmyadmin.Domain.com
它按预期工作!但在提交用户名/密码后,它phpmyadmin.Domain.com:8080/index.php?...
也会将我重定向到无法找到页面的响应!
我能做什么?
答案1
我自己也遇到了同样的问题。解决方案是修改 config.inc.php 并指定 phpMyAdmin 安装的绝对 URL。根据phpMyAdmin 文档, 添加:
$cfg['PmaAbsoluteUri'] = 'http://your.domain.com/path/to/phpmyadmin/';
在这种情况下,不需要添加port_in_redirect off;
到 nginx 配置 - 尽管这样做似乎没有任何不利影响(并且在其他情况下确实有帮助)。
答案2
只需在 nginx 配置文件中的任意位置的 php 位置块中添加以下行即可后那个include fastcgi_params
部分:
fastcgi_param SERVER_PORT 80;
这将告诉 php 它不应该尝试重定向到 nginx 正在监听的任何端口,而是停留在端口 80 上,就像 varnish 一样。
答案3
可能是 phpmyadmin php 文件/设置中存在问题,正在查找标准端口 80。这似乎在某些脚本和 Varnish 中很常见,例如 vbulletin 和 4images 脚本也存在类似的问题http://vbtechsupport.com/290/和http://vbtechsupport.com/303/- 希望它能给你一些想法,让你知道在哪里可以找到 phpmyadmin 来纠正这个问题。