phpMyAdmin 透過 nginx 反向代理載入極為緩慢

phpMyAdmin 透過 nginx 反向代理載入極為緩慢

因此,我家裡有一台Synology NAS,運行著一些服務,我需要從WWW 訪問這些服務,但可以理解的是,我不想將我的家庭IP 上的連接埠開放到廣泛的互聯網(特別是因為外部服務需要在連接埠上存取我的伺服器) 443) - 所以我決定在安裝了Ubuntu 22.04 的Oracle Cloud 上啟動一個Always Free 實例(0.48Gbps 連接、1 個CPU、1GB RAM),並在其上安裝nginx,以便從我的家庭網路外部存取這些服務。然後,我僅向雲端執行個體的 IP 位址開放路由器上的連接埠。

我確實有透過 SSH 管理 Linux 伺服器的經驗,但這是我第一次使用 nginx,更不用說反向代理了。

在測試過程中,我將連接埠對所有 IP 開放,因此我可以直接或透過反向代理測試傳入我的實驗室的流量。這就是我開始掙扎的地方:

  • 當我直接訪問在上游伺服器上運行的 phpMyAdmin 時(我只是查詢https://pma.upstream.mydomain.xyz:openedPort在我的瀏覽器中),它會立即加載 - 即使快取被清除
  • 當我透過反向代理程式存取上游伺服器上執行的 phpMyAdmin 時(透過查詢https://pma.reverseproxy.mydomain.xyz:443在我的瀏覽器中),清除瀏覽器快取後需要一分多鐘的時間才能載入。當快取已經加載時,它並不那麼慢(可能10秒),但它仍然比直接查詢上游伺服器慢得多(當我關閉更廣泛的互聯網連接埠時,這是不可能的)。檢查瀏覽器控制台後,花費時間最長的是 phpMyAdmin 用作圖示的微小 PNG(每個圖片最多幾百位元組)和較大的 CSS/JS 檔案(幾十 KB)。

當我透過反向代理訪問上游伺服器上的不同站點時,我似乎沒有遇到這些問題,儘管它確實沒有提供那麼多微小的 JS 和 PNG 文件,大部分只是文本

下面是我的 nginx 伺服器區塊設定。有人知道我可能出錯的地方嗎?任何建議將不勝感激。

server {
    listen 443 ssl http2;
    server_name pma.reverseproxy.mydomain.xyz;

    sendfile on;
    tcp_nodelay on;
    tcp_nopush on;

    ssl_certificate /etc/letsencrypt/live/reverseproxy.mydomain.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/reverseproxy.mydomain.xyz/privkey.pem;

    resolver 1.1.1.1 8.8.8.8 valid=300s;
    set $backend_server https://pma.upstream.mydomain.xyz:openedPort;

    location / {
        proxy_pass $backend_server;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header Host pma.upstream.mydomain.xyz;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_buffer_size 128k;
        proxy_buffers 8 256k;
        proxy_busy_buffers_size 256k;

        gzip on;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        proxy_read_timeout 20s;
    }
}

相關內容