为什么我的 nginx 负载均衡器登录后会误导 phpMyAdmin?

为什么我的 nginx 负载均衡器登录后会误导 phpMyAdmin?

在我的测试服务器中,我有一个指向在同一台机器上运行的 Apache 服务器的 nginx 负载均衡器,并且我在 Apache 下安装了 phpMyadmin。

我的 nginx 配置:

http {
 upstream backend {
  ip_hash;
  server 127.0.0.1:8080 max_fails=3  fail_timeout=15s;
 }

 server {
  listen 80;
  location / {
   proxy_pass http://backend;
  }
 }
}

我的 Apache ports.conf 是 8080,并且我已经在我的 VirtualHost 配置中对其进行了更改。

这里的问题是:当我打开时http://127.0.0.1/phpMyAdmin,我进入正确的登录页面,但是,一旦我输入登录详细信息并单击登录,我就会被转发到http://backend:8080/phpmyadmin。更有趣的是,登录请求成功,因为当我返回时,http://127.0.0.1/phpMyAdmin我发现自己已经登录。

我的服务器正在运行全新的 ubuntu 安装,除了上述内容外,所有内容均使用默认设置,没有任何变化:)。

答案1

用这个 :

location / {
    proxy_pass http://backend/;
}

尾随斜杠将告诉 nginx 将从后端重写重定向到规范化的根 URI,删除后端主机和端口并使用配置的主服务器名称。

答案2

正如其他人提到的phpMyAdmin 不应在生产中使用,但无论如何我都会回答我自己的问题。

为了使其工作,我只需要为 Apache 指定我的虚拟主机和服务器名称:

<VirtualHost 127.0.0.1>
ServerName www.example.com

相关内容