NGINX-如何重定向504网关超时



我正在使用nginx作为玻璃鱼的反向代理。当玻璃鱼返回50倍错误时,我能够从CDN识别并重定向到另一个资源。

但是,如果仅仅限制了nginx,则会使用504网关超时响应用户,而不是通过重写将CDN的良好资源重定向。

在这种情况下,我想做同样的事情,如果nginx times out,我想重定向到另一个URL,就像我在 @redir_404中一样。

我该如何实现?

谢谢。

server {
listen *:80;
ssl off;
access_log  /var/log/nginx/access-.log;
error_log   /var/log/nginx/error-.log;
client_max_body_size 60m;
location @redir_404 {
    rewrite /ad/(.*?)(?.*)?$ $scheme://cdn.company.com/ad/$1/index.html break;
    rewrite /tag(.*?)$  $scheme://cdn.company.com/tag/pixel.png break;
}
location / {
    proxy_intercept_errors on;
    set_real_ip_from 192.23.45.16;
    real_ip_recursive on;
    real_ip_header X-Forwarded-For;
    proxy_pass http://localhost:8080;
    # Force timeouts if one of the backend is dead #
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;    
    # Set headers #
    proxy_set_header    Host        $host;
    proxy_set_header    X-Real-IP   $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_set_header        X-Umotion-Ip    $remote_addr;
    proxy_set_header        User-Agent    $http_user_agent;
    add_header      Front-End-Https on; 
    # By default we don't want to redirect #
    proxy_redirect off;
    # Force cache-control to no-cache for /tag and /ad
    location ~ ^/(tag|ad) {
        proxy_pass http://localhost:8080;
        add_header Cache-Control "private, no-cache, no-store, must-revalidate, proxy-revalidate";
    }
    error_page 403 404 405 500 501 502 503 504 = @redir_404;
}

}

将error_page位置添加到服务器块中重定向。

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
        root /usr/share/nginx/html;
        internal;
  } 

我们可以根据需要自定义错误页面(/50x.html是cutom设计的页面(

相关内容

  • 没有找到相关文章

最新更新