Nginx 返回GET本地IP而不是域名

Nginx 返回GET本地IP而不是域名

我使用 nginx 作为虚拟机的反向代理。当我尝试在我的网站或 phpmyadmin 中验证自己的身份时,如果 POST 来自域,则 nginx 会从本地 IP 返回响应!

看: Nginx 返回本地IP而不是域名

这里我尝试对 phpmyadmin 进行身份验证。验证成功后,我必须刷新页面才能成功连接。

这是我的 nginx 配置:

server {
    listen 80;
    server_name     mysql.mydomain.com;
    location / {
            proxy_pass      http://10.0.2.103;
    }
}

我的默认文件是:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
                try_files $uri $uri/ =404;
                proxy_set_header    Host                $http_host;
                proxy_set_header    X-Real-IP           $remote_addr;
#               proxy_set_header    X-Forwarded-Ssl     on;
                proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
                fastcgi_param REMOTE_ADDR $http_x_real_ip;

                proxy_set_header    X-Forwarded-Proto   $scheme;
                proxy_set_header    X-Frame-Options     SAMEORIGIN;
        }

        # Pour let's encrypt
        location '/.well-known/acme-challenge' {
                default_type "text/plain";
                root         /root/certbot-auto/;
        }

        # On interdit tout autre appel
        location ~ /\. {
                deny all; access_log off; log_not_found off;
        }
}

我使用 CloudFlare 进行 SSL 认证。如果需要,我可以将 Let's Encrypt 与 Nginx 结合使用。Apache 用于 Phpmyadmin 和其他虚拟机上的其他服务。

我从昨天早上开始就在网上搜索,但没有找到有关此类问题的任何信息。你知道出了什么问题吗?

答案1

这实际上与 nginx 没有任何关系。

当您执行 POST 请求登录 PHPMyAdmin 时,PHPMyAdmin 会向页面返回 302 重定向index.php,这会导致您的浏览器尝试从错误的地址加载页面。

因此,您必须修复 PHPMyAdmin 中的基本 URL 设置,以便它生成具有正确域名的正确 URL。

您需要添加到 PHPMyAdmin 配置的设置是:

$cfg['PmaAbsoluteUri'] = 'https://mysql.example.com/';

此选项记录在https://docs.phpmyadmin.net/en/latest/config.html#basic-settings

相关内容