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;
    }
}

相关内容