2017-01-11 13 views
0

По какой-то неожиданной причине мой сервер nginx отвечает на статические файлы (например, .css и .js) в течение слишком долгого времени. Например, есть некоторые связанные скрипты и таблицы стилей на странице с размером файлов менее 10 КБ. Профилирование временной привязки Chrome devtools показывает, что эти файлы загружаются примерно на 15+ секунд (см. Снимок экрана ниже).Nginx ответы статические файлы в течение слишком долгого времени

Timeline profiling in Chrome DevTools

Что может быть причиной responsing статические файлы так долго?

Важное обновление. Я заметил, что это происходит только на html-страницах. Если до открыть любой js или css-файл по отдельности, он загружается быстро, так как это действительно ожидается.

Я использую Nginx + Apache узелок на моем сервере, и Nginx отвечает за все статические файлы, такие как JS, CSS, изображения и т.д ..

Thx заранее.

+0

ли это происходит в других браузерах, а? – michip96

+0

Да, в Chrome, Safari, IE (включая Edge) и FireFox (последние версии). – impulsgraw

+0

Эта ошибка возникает каждый раз, когда вы подключаетесь к серверу или только с первой попытки? У вас может возникнуть проблема с поиском DNS. (http://serverfault.com/a/385161) Вы уверены, что файлы загружаются быстро, когда вы открываете их напрямую? Может быть, ваш браузер кэшировал их. – michip96

ответ

0

Моя проблема вызвана DDoS-защитой (ngx_http_limit_req_module), которая была настроена неправильно. Я случайно поместил nginx-конфигурацию с копированием где-то из Интернета на мой сервер (так что все работало нормально, за исключением времени загрузки страницы). Thx бог я попал в точку, чтобы проверить Nginx журнал ошибок, в которых были предупреждения, как

2017/01/12 04:14:33 [предупредит] 21347 # 21347: * 120 запрос задерживая избыток: 0,975 , по зонам "my_host", клиент: my_ip_address, сервер: my_host, запрос: "GET JS_OR_CSS_SCRIPT_URI HTTP/1.1", хост: "my_host", ссылающейся: "page_url_which_was_requesting_js_or_css"

Таким образом, погуглить помогли настроить limit_req_zone и limit_req правильно:

http { 
    limit_req_zone $host zone=hostreqlimit:20m rate=1500r/m; 
    ... 
    server { 
       ... 
       limit_req zone=hostreqlimit burst=2500 nodelay; 
       ... 
    } 
} 

Извините за глупый вопрос с: