今日工作排查一個問題,門戶頁面打開很慢,排查發現 nginx 有如下日誌:
access 日誌:
time=16/Jun/2020:16:28:06 +0800||rmip=*.*.*.*||upaddr=1.1.1.1:33200||upstatus=504||reqtime=60001.196||uprep_time=60.001||Cache=-||body_bytes=576||req=GET /favicon.ico HTTP/1.1||status=504
error日誌:
2020/06/16 14:13:12.806141 <ngx_http_upstream.c:4887> [error] 301#301: *81244672 upstream timed out (110: Connection timed out) while connecting to upstream, client: *.*.*.*, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://1.1.1.1:33200/favicon.ico", host: "*.*.*.*:31443", referrer: "https://*.*.*.*:31443/**/**/**.jsp"
排查門戶發現,並沒有自主發起 /favicon.ico 請求,網上查找資料瞭解到:
瀏覽器在請求頁面前會自主發起/favicon.ico請求,獲取網頁圖標,就是如下截圖紅框中所展示的標記:
由於版本有配置如下的通用匹配location和回源配置,導致請求被轉發到:1.1.1.1:33200,導致超時
upstream web{
ip_hash;
server 1.1.1.1:33200 max_fails=5;
keepalive 1200;
}
...
location / <-- 優先級最低,匹配任意請求
{
proxy_pass http://web;
}
解決方法,加上如下配置,暫時規避:
location /favicon.ico {
return 404;
}