2012-06-05 14 views
20

कभी-कभी मुझे त्रुटि 502 के साथ कोई समस्या होती है जब httpd सेवा डाउन होती है। लेकिन केवल 1 मिनट में वेबसाइट वापस आती है।nginx के मूल में कस्टम त्रुटि 502 nginx कैसे बनाएँ (त्रुटि पृष्ठ पर रीडायरेक्ट का उपयोग नहीं कर रहा है)?

मुझे उपयोगकर्ता को 1 मिनट के लिए प्रतीक्षा करने के लिए 50 मिनट का संदेश कस्टम करने की आवश्यकता है, फिर पेज रीफ्रेश करें, या 1 मिनट के बाद ऑटो रीफ्रेश पृष्ठ पर जावास्क्रिप्ट या मेटा रीफ्रेश टैग एम्बेड करें। पृष्ठ के URL ताज़ा प्रभाव

सूचना है कि मैं कस्टम त्रुटि पृष्ठ रीडायरेक्ट जैसे location = /502.html के बारे में पता करने के लिए एक ही होना चाहिए, लेकिन कस्टम त्रुटि पेज के प्रकार अन्य पेज के लिए उपयोगकर्ता रीडायरेक्ट करेगा, अगर वे पेज वे मिल जाएगा त्रुटि ताज़ा होगी पेज फिर से।

कोई भी विचार बहुत उपयोगी होगा। और अधिक विस्तार 2012/10/06 के लिए


संपादित करें अद्यतन।

मेरे nginx config:

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/*"; 
} 

और vhost config:

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

    } 

== मामला परीक्षण ..

अपाचे httpd सेवा बंद हो जाता है: #service httpd stop

फिर खोलें ब्राउज़र में यह लिंक: http://www.xaluan.com/modules.php?name=News&file=article&sid=123456 आपको ब्राउज़र पते पर एक ही यूआरएल के साथ 502 त्रुटि दिखाई देगी।

== कस्टम त्रुटि पेज मैं config जो मदद मिलेगी जब अपाचे असफल की जरूरत है, दिखाएगा कस्टम संदेश उपयोगकर्ता कह 1 सेवा के लिए मिनट के लिए वापस इंतजार करना है, तो उसी यूआरएल के साथ वर्तमान पृष्ठ को रीफ्रेश (ताज़ा मैं जावास्क्रिप्ट द्वारा आसान कर सकता हूं), Nginx यूआरएल नहीं बदलता है इसलिए जावास्क्रिप्ट काम कर सकता है।

उत्तर

27

मुझे एक उत्तर मिला जो मेरे लिए काम करता है। vhost कॉन्फ़िग फ़ाइल में, मैं सही server ब्लॉक के अंत में शब्दों में कहें, को बंद करने से पहले ब्रेस: ​​

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

     root /home/xaluano/public_html; 

    } 
बेशक

मैं भी अपने डोमेन के रूट पर एक फ़ाइल 502.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> 
+0

ध्यान दें कि मैं भी 'जोड़ने के लिए try_files $ uri /502.html था,' स्थान =/502.html' ब्लॉक करने के लिए ' –

+0

धन्यवाद (nginx संस्करण 1.2.1 का प्रयोग करके)! यह पूरी तरह से काम किया। –

4

http://nginx.org/r/error_page

ध्यान दें कि error_page 502 /502.html; प्रदर्शन आंतरिक रीडायरेक्ट। यह ब्राउज़र पता बार में यूआरएल नहीं बदलता है।

+0

आप बह कोड अर्थ ब्राउज़र का यूआरएल chage नहीं होगा ?: error_page 502 /502.html; स्थान = /502.html { रूट/घर/xaluano/public_html; } –

+0

हां, यह नहीं बदलेगा। – VBart

+1

मैंने एक परीक्षण किया ..और यह अभी भी ब्राउज़र के यूआरएल को बदलता है; मैं भी आंतरिक के साथ परीक्षण; लेकिन अभी भी एक ही परिणाम। यह मुझे डोमेन.com/502.html –

संबंधित मुद्दे