Nginx
Nginx 返回返回 GET 本地 IP 而不是域
我使用 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,以及其他 VM 上的其他服務。
我從昨天早上開始在網上搜尋,但我沒有發現任何關於這種問題的資訊。你知道出了什麼問題嗎?
這實際上與 nginx 沒有任何關係。
當您發出 POST 請求以登錄 PHPMyAdmin 時,PHPMyAdmin 會向
index.php
頁面發送 302 重定向,這會導致您的瀏覽器嘗試從錯誤的地址載入頁面。因此,您必須修復 PHPMyAdmin 中的基本 URL 設置,以便它生成具有正確域名的正確 URL。
您需要添加到 PHPMyAdmin 配置的設置是:
$cfg['PmaAbsoluteUri'] = 'https://mysql.example.com/';
此選項記錄在https://docs.phpmyadmin.net/en/latest/config.html#basic-settings中。