refused - ¿Cómo crear el error personalizado 502 nginx en el núcleo de nginx(no se usa la redirección a la página de error)?
nginx timeout 502 (2)
A veces me sale un problema con el error 502 cuando el servicio httpd no funciona. Pero solo en 1 minuto vuelve la web.
Necesito personalizar el mensaje 502 para pedirle al usuario que espere 1 minuto y luego actualizar la página, o incrustar JavaScript o meta etiqueta de actualización para actualizar automáticamente la página después de 1 minuto. La URL de la página debe ser la misma para hacer un efecto de actualización
Tenga en cuenta que conozco la redirección de página de error personalizada, por ejemplo, location = /502.html
, pero ese tipo de página de error personalizada redirigirá al usuario a otra página; si actualizan la página, volverán a tener la página de error.
Cualquier idea será muy útil.
EDITAR ACTUALIZACIÓN para más detalles 10/06/2012.
Mi configuración 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/*";
}
y 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;
}
}
== la prueba de caso ..
Si el servicio httpd de Apache se detiene: #service httpd stop
Luego abra en el navegador este enlace: http://www.xaluan.com/modules.php?name=News&file=article&sid=123456 Verá el error 502 con la misma URL en la dirección del navegador.
== Página de error personalizada Necesito la configuración que ayudará cuando Apache falle, mostrará un mensaje personalizado que le indicará al usuario que espere 1 minuto para que le devuelvan el servicio y luego actualiza la página actual con la misma URL (actualizar con JavaScript), Nginx no cambia la URL por lo que JavaScript puede funcionar.
Encontré una respuesta que funciona para mí. En el archivo de configuración vhost, coloco justo al final del bloque del server
, antes de cerrar la llave:
error_page 502 /502.html;
location = /502.html {
root /home/xaluano/public_html;
}
Por supuesto, también necesito crear un archivo 502.html en la raíz de mi dominio, con la actualización de meta-tag y la actualización automática de java-script.
El contenido de la página html es:
<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>
Tenga en cuenta que error_page 502 /502.html;
Realiza redireccionamiento interno . No cambia la URL en la barra de direcciones del navegador.