解决1Panel容器升级时系统异常或返回登录页

复现

  • 使用 OpenResty 反向代理 1Panel,或使用默认的 Nginx 配置来手动反向代理 1Panel
  • 在 1Panel 的 容器 - 操作 - 更多 - 升级 中,强制拉取镜像
  • 如果仓库中存在更新版本,将在 /api/v1/containers/upgrade 接口中触发容器镜像拉取行为
  • 此时如果镜像过大,或拉取速度较慢,将导致 /upgrade 接口执行超过 60s
  • 此时 /upgrade 接口返回 504 Gateway Time-out,页面返回登录页

解决

Nginx 或 OpenResty 中反向代理配置中 proxy_read_timeout 默认值为 60,表示反向代理服务器超时时间为 60s,接口请求超过该时长后直接返回 504

在 1Panel 上游的反向代理配置中加入 proxy_read_timeout 300;,将超时时间配置为 300s,具体超时时长请根据具体业务需求调整

例如 OpenResty 的 1Panel 反向代理配置修改如下:

location ^~ / {
    proxy_pass http://172.18.0.1:12345; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection $http_connection; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Cache-Control no-cache; 
    proxy_ssl_server_name off; 
    proxy_ssl_name $proxy_host; 
    proxy_read_timeout 300; // 配置超时时长
    add_header Strict-Transport-Security "max-age=31536000"; 
}