如何排除部分页面创建nginx的维护页面503

需要排除部分URL,将剩下的页面返回503,自定义的一个显示正在维护的页面。nginx的部分配置如下:

location / {
# 跨域设置
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,Accept,Origin,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
 }

# 维护页面
set $flag 0;
if ($request_uri !~ "(/houtai/).*$"){
      set $flag "${flag}1";
 }
if ($request_uri !~ "/503/503.html$" ){
      set $flag "${flag}2";
 }
if ($request_uri !~ "(/503/css/.*)$" ){
      set $flag "${flag}3";
 }
if ($request_uri !~ "(/503/images/.*)$" ){
      set $flag "${flag}4";
}
if (-f $document_root /503/503.html) {
      set $flag "${flag}5";
}
if ($request_uri !~ "/zt"){
      set $flag "${flag}6";
 }
if ($flag = "0123456") {
           return 503;
         }
}
 error_page 503 @maintenance;
    location @maintenance {
    rewrite ^(.*)$ /503/503.html break;
 }

503这个目录是放在网站的跟目录下,自定义的503.html这个维护页面包含的图片images样式css也都在里面。
实际的效果是希望,当访问的URL不含houtai,不含503,不含zt的时候,则显示维护页面。但是,实际情况是发现有些页面的URL不含上面3个目录依然是正常显示的。

阅读 3k
1 个回答

原来是放匹配的地方放错了,不应该放到location / 里面:

# 维护页面
set $flag 0;
if ($request_uri !~ "/houtai"){
      set $flag "${flag}1";
 }
if ($request_uri !~ "/503/503.html$" ){
      set $flag "${flag}2";
 }
if ($request_uri !~ "(/503/css/.*)$" ){
      set $flag "${flag}3";
 }
if ($request_uri !~ "(/503/images/.*)$" ){
      set $flag "${flag}4";
}
if (-f $document_root /503/503.html) {
      set $flag "${flag}5";
}
if ($request_uri !~ "/zt"){
      set $flag "${flag}6";
 }
if ($flag = "0123456") {
           return 503;
         }
}
 error_page 503 @maintenance;
    location @maintenance {
    rewrite ^(.*)$ /503/503.html break;
 }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题