solomenikm 29.03.2011 14:26
Есть проблема! — [не решена, но купирована] nginx, отдача статики.
Есть проблема с отдачей статики. Суть проблемы в том что иногда статика грузится не полностью. Побробное описание под катом.Если в реальном времени смотреть на загрузку картинки (предположим что она весит 100кб) файрбагом, то происходит следующее: загружается 30 кб, загруженная часть отображается в браузере, небольшая пауза (меньше секунды) и загружается оставшаяся часть картинки со статусом 200, но в браузере не обновляется. Если открыть картинку в новом окне, то загрузится та же часть но уже со статусом 206. При обновлении страницы догружается до конца. Проблема особенно часто вылазит при низкой скорости подключения.
Конфиг после попыток что-то с этой проблемой сделать:
Может кто-то сталкивался с такой проблемой? С чем она вообще может быть связана?

+ 0 -
Спросите лучше в рассылке nginx - http://sysoev.ru/nginx/support.html
sendfile отключать пробовал?
и вопрос не по теме:
limit_req_zone $binary_remote_addr zone=slimits:5m rate=300r/s ;
а почему 300?
и вопрос не по теме:
limit_req_zone $binary_remote_addr zone=slimits:5m rate=300r/s ;
а почему 300?
Пробовал, не помогло. rate был 30, но в попытка избавиться от проболемы поставил 300.
Попробуй закомментировать все строки конфига, кроме локейшенов и посмотреть будет ли проблема. Потом поблочно включай настройки и смотри после чего проблема снова появился. Может проблема и не в настройках nginx.
Вариант, а какие на кого еще можно грешить? Кто может не нормально отдавать статику?
В голову приходит только фаерволл. Но таки в первую очередь попробуй убрать лишние настройки в nginx'е. 90% что пробелма в конфиге.
А еще попробуй посмотреть как грузится картинка с другого браузера и с другого компъютера. Может пробелма и не в серваке вообще :)
А еще попробуй посмотреть как грузится картинка с другого браузера и с другого компъютера. Может пробелма и не в серваке вообще :)
Смотрел, проблема есть, особенно видна при низкой скорости подключения пользователя (смотрел на компе 3g модемом).
Для чего использована try_files? Почему простое обращение к директории не устроило?
Зачем установлены лимиты для обращения к апачу?
Есть ещё много зачемов в этом конфиге, но эти два самые интересные.
Зачем установлены лимиты для обращения к апачу?
Есть ещё много зачемов в этом конфиге, но эти два самые интересные.
try_files нужен чтоб отдавать динамически генерируемые картинки, а лимит там действительно лишний. А с лимитом ошибся т.к. собирал конфиг из файлов и случайно вклеил, сейчас уберу.
Кстати, может быть Вы мне объяните чем "try_files $uri $uri/ @nocached;" отличается от "error_page 404 = @nocached;".
Кстати, может быть Вы мне объяните чем "try_files $uri $uri/ @nocached;" отличается от "error_page 404 = @nocached;".
В первом случае nginx сначала ищет статику в $uri и $uri/, а только потом уже отсылает к @nocached. Во втором случае он сразу же, если не найдено, отсылает в @nocached. Например, это полезно, на проксируемом сайте для создания иконок предпросмотра используется php'шный ImageCache. Совсем недавно я писал об этом здесь.
Да, для этого и использую. Оставил error_page т.к. искать в $uri/ смысла нет. Спасибо за разъяснение.
А еще такой момент. В логах ошибок nginx вижу вот что:
"›????????›???????????????????????????????????????????????‰????????..." Что бы это могло значить?
"›????????›???????????????????????????????????????????????‰????????..." Что бы это могло значить?
nginx — это HTTP-сервер и почтовый прокси-сервер. Я начал разрабатывать nginx весной 2002 года, а осенью 2004 года вышел первый публично доступный релиз. В декабре 2009 года nginx использовался на 4% самых посещаемых сайтов в мире.
Источник http://sysoev.ru/nginx/
Источник http://sysoev.ru/nginx/
engine x
engine X
engine X!!!1111
Не нгинкс, а Энжэн Икс.
Не Люникс, Линекс, Лайнекс, а Линукс (я не шучу можете погуглить).
Не Апачи, а Апач.
...
Как-то так.
Не Люникс, Линекс, Лайнекс, а Линукс (я не шучу можете погуглить).
Не Апачи, а Апач.
...
Как-то так.
nginx (англ. engine x) (по-русски произносится как э?нджин-э?кс) наверное все-таки как-то вот так.
А почему бы так и не назвать проект? Сделали малопонятное сокращение, теперь все путаются. Я вот про правильное произношение узнал, только когда неправильно приучился говорить
Ну тут как бы самый верный способ для начала - сбросить конфиг в деф и потихоньку пилить, потому что на глаз куча всего ненужного и непонятного лезет, например
Короче, закомментил все настройки кроме гзипа, кэширования и лимитов. Вроде полет нормальный. Буду смотреть на поведение и потихоньку убирать комменты, посмотрим что выйдет.