我使用 nginx 作为虚拟机的反向代理。当我尝试在我的网站或 phpmyadmin 中验证自己的身份时,如果 POST 来自域,则 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。