ubuntu+nginx当服务器异常时微信/企业微信/抖音数据重复回调导致服务器崩溃怎么解决?

Song54 次浏览0个评论2025年05月30日

我们最近在使用ubuntu+nginx部署服务器时;我们产品对接的是微信/企业微信/抖音等平台数据回调Hook,平时流量正常时也就几十M数据,但是一些时候流量暴增导致服务器瘫痪,如果升级服务器吧这是异常导致的成本浪费,我们想办法处理一下。

一、问题出现的原因是:

  • 1、服务器偶尔卡死,当服务器恢复正常时这期间的异常数据重新推送,造成HOOK重新推送;这期间导致了服务器卡死,然后HOOK再次推送(一般会推送3次),则这样只要一堵死就导致了疏通困难。
  • 2、官方服务异常后重新启动服务,这种情况会出现大量的Hook推送,如何服务器性能不达标就会出现1的情况,导致服务器崩溃。

二、如何解决?

针对这个问题我处理了一个解决方案,这个是针对推送消息不重要的情况;如果支付数据啥的不能通过这个方法来解决。

  • 当服务器异常时,依然返回200状态的 success ;直接避免了重复推送导致服务器崩溃。

解决办法如下:

vim /var/www/html/success.html
# 输入success

然后我们在Nginx中获取到异常然后直接返回success。

server {
    listen 443 ssl;
    root /var/www/baidu/public;
    index index.php index.html index.htm;
    server_name baidu.com;
    client_max_body_size 100m;
    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

            fastcgi_intercept_errors on;
            error_page 500 502 503 504 =200 /var/www/html/success.html;
    }
    location ~ /\.ht {
            deny all;
    }
    ssl_certificate      /var/www/baidu/ssl/1.crt;
    ssl_certificate_key  /var/www/baidu/ssl/1.key;
}

fastcgi_intercept_errors on; 是 Nginx 配置中的一个指令,用于控制是否将错误页面的处理交给 Nginx 来进行。具体来说,它决定了当后端(如 PHP-FPM)返回错误状态码(例如 4xx 或 5xx 错误)时,Nginx 是否应该拦截这些错误并将它们重定向到自定义的错误页面。

更多相关好文