Nginx

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

  • July 19, 2017

我使用 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,以及其他 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中。

引用自:https://serverfault.com/questions/862095