带有CSS和图像的Nginx自定义维护503页面

时间:2019-07-18 12:31:58

标签: html css nginx

我有一个带有自定义503的nginx虚拟服务器,用于维护。 html页面使用Google字体,引导程序中的某些字体,还使用本地服务器中的CSS和图像。

当页面被加载时,链接的css不会被加载。使用Firefox网络工具,可以看到错误503。 尝试清除CSS网址,然后由浏览器加载CSS。

即使错误503,图像也会正确显示。

好吧

这是我的nginx配置:

  if (-f /home/user-site/www/MainWebSite/releases/current/.maintenance) {
    return 503;
  }

  if (!-d /home/user-site/www/MainWebSite/releases/current) {
    return 503;
  }

#  error_page 503 /maintenance.html;
#  location = /maintenance.html {
#    root    /home/user-site/www/MainWebSite/htdocs;
#  }

  error_page 503 @maintenance;
  location @maintenance {
    root    /home/user-site/www/MainWebSite/htdocs;
    #rewrite ^(/css)/(.+?)(\.[^.]*$|$) /stuff/css/$2$3 break;
    rewrite ^(/img)/(.+?)(\.[^.]*$|$) /stuff/img/$2$3 break;
    rewrite ^(.*)$ /maintenance.html break;
  }

我认为即使重写规则正确地重新调整了css,由于服务器返回的错误503也无法加载css。

如何防止CSS和目标网页图片出现错误503?

坦克。


更新!! 在this solution之后,配置就可以了!

  if (-f /home/user-site/www/MainWebSite/releases/current/.maintenance) {
    set $err503 1;
  }

  if (!-d /home/user-site/www/MainWebSite/releases/current) {
    set $err503 1;
  }

  error_page 503 @maintenance;
  location @maintenance {
    root    /home/user-site/www/MainWebSite/htdocs/error503;
    try_files $uri /maintenance.html =503;
  }


  location /static {
    root /home/user-site/www/MainWebSite;
  }
  location /media {
    root /home/user-site/www/MainWebSite;
  }
  location /robots.txt {
    root /home/user-site/www/MainWebSite/htdocs/robots.txt;
  }
  location /sitemap.xml {
    root /home/user-site/www/MainWebSite/htdocs/sitemap.xml.txt;
  }

  location ~* \.(css) {
    root    /home/user-site/www/MainWebSite/htdocs/error503;
        # The file will be returned
  }

  location ~* \.(png|jpg|jpeg) {
      root    /home/user-site/www/MainWebSite/htdocs/error503;
      # The file will be returned
  }

  location / {
     if ($err503 = 1) {
        return 503;
     }

     uwsgi_pass unix:/tmp/uwsgi_MainWebSite.sock;
     include /etc/nginx/uwsgi_params;

  }

0 个答案:

没有答案