28

httpd サービスがダウンしていると、エラー 502 の問題が発生することがあります。しかし、たった1分でウェブサイトが戻ってきます。

502 メッセージをカスタマイズして、ユーザーに 1 分間待ってからページを更新するように求めるか、1 分後にページを自動更新するように JavaScript またはメタ更新タグを埋め込む必要があります。更新効果を得るには、ページの URL が同じである必要があります

カスタムエラーページのリダイレクトについては知っていますlocation = /502.htmlが、そのタイプのカスタムエラーページはユーザーを他のページにリダイレクトします。ページを更新すると、エラーページが再び表示されます。

どんなアイデアでも非常に役立ちます。


詳細については、2012 年 10 月 6 日の更新を編集してください。

私のnginx設定:

user  nobody;
# no need for more workers in the proxy mode
worker_processes  24;
error_log  /var/log/nginx/error.log crit;
#worker_rlimit_nofile 20480;
events {
 worker_connections 109024; # increase for busier servers
 use epoll; # you should use epoll here for Linux kernels 2.6.x
}

http {
 server_name_in_redirect off;
 server_names_hash_max_size 2048;
 server_names_hash_bucket_size 256;
 include    mime.types;
 default_type  application/octet-stream;
 server_tokens off;
 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout  20;

 ignore_invalid_headers on;
 client_header_timeout  50m;
 client_body_timeout 50m;
 send_timeout     20m;
 reset_timedout_connection on;
 connection_pool_size  2048;
 client_header_buffer_size 256k;
 large_client_header_buffers 4 256k;
 client_max_body_size 20M; 
 client_body_buffer_size 300k;
 request_pool_size  32k;
 output_buffers  14 32k;
 postpone_output  1460;
 proxy_temp_path  /tmp/nginx_proxy/;
 proxy_cache_path /dev/shm/nginx levels=1:2 keys_zone=wwwcache:45m inactive=5m max_size=1000m;
 client_body_in_file_only off;
 access_log off;
 open_log_file_cache off;
 #log_format bytes_log "$msec $bytes_sent .";
 include "/etc/nginx/vhosts/*";
}

および仮想ホスト構成:

server {
 #         error_log /var/log/nginx/vhost-error_log warn;
          listen 123.30.137.66:80;
          server_name xaluan.net mtvvui.com www.daiduong.com.au www.xaluan.net xaluan.com www.xaluan.com www.daiduongrestaurant.net veryzoo.com www.mtvvui.com www.xaluan.org www.veryzoo.com daiduongrestaurant.net xaluan.org daiduong.com.au;
#          access_log /usr/local/apache/domlogs/xaluan.net combined;
          root /home/xaluano/public_html;
          location / {
      if ($http_cache_control ~ "max-age=0") {
                set $bypass 1;
          }

      location 
~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ 
{
      #root /home/xaluano/public_html;  
    #proxy_cache wwwcache;
      #proxy_cache_valid  200 15m;
      #proxy_cache_bypass $bypass;
          expires 1d;
          #try_files $uri @backend;
      proxy_pass http://123.30.137.66:8081;
          }
          error_page 405 = @backend;
          add_header X-Cache "HIT from Backend";
      #proxy_set_header Server "Caching-Proxy";
          #add_header X-Cache-Vinahost "HIT from Backend";
      proxy_pass http://123.30.137.66:8081;
          include proxy.inc;

          }


          location @backend {
          internal;
          proxy_pass http://123.30.137.66:8081;
          include proxy.inc;
          }
          location ~ .*\.(php|jsp|cgi|pl|py)?$ {
          #proxy_cache wwwcache;
      #proxy_cache_valid  200 15m;

      proxy_pass http://123.30.137.66:8081;
          include proxy.inc;
          }
          location ~ /\.ht {
          deny all;
          }

     }

==ケーステスト..

Apache httpd サービスが停止した場合:#service httpd stop

次にブラウザで次のリンクを開きます: http://www.xaluan.com/modules.php?name=News&file=article&sid=123456 ブラウザのアドレスに同じ URL で 502 エラーが表示されます。

==カスタム エラー ページ Apache が失敗したときに役立つ設定が必要です。ユーザーにサービスが戻るまで 1 分間待つように指示するカスタム メッセージを表示し、同じ URL で現在のページを更新します (JavaScript で簡単に更新できます)、Nginx JavaScript が機能するように URL を変更しません。

4

2 に答える 2

50

自分に合った答えを見つけました。vhost 構成ファイルでは、ブロックの最後に右中server括弧を配置しました。

 error_page 502 /502.html;
 location = /502.html {

      root  /home/xaluano/public_html;

  }

もちろん、ドメイン ルートにファイル 502.html を作成し、メタ タグの更新と Java スクリプトの自動更新も行う必要があります。

html ページのコンテンツは次のとおりです。

<head>
<meta http-equiv="refresh" content="40" /> 
</head>
<body>
<script language="JavaScript" type="text/javascript">
/*<![CDATA[*/
var TimerVal = 40;
var TimerSPan = document.getElementById("CDTimer");
function CountDown(){
   setTimeout( "CountDown()", 1000 );
   TimerSPan.innerHTML=TimerVal;
   TimerVal=TimerVal-1;
   if (TimerVal<0) { TimerVal=0;
   location.reload(true); 
//   window.location.href = "http://www.xaluan.com";
   } //improvement by vivalibre, tq 
}
CountDown();
/*]]>*/ </script> 
</body>
于 2012-06-10T02:37:38.143 に答える