klink0v (klink0v) wrote,
klink0v
klink0v

Category:

Обжегся об nginx

Nginx. Довольно неплохо, качественно написанный программный продукт. Казалось бы, обо что там можно споткнуться. Но ведь поди ж ты.

Ситуация 1.

Допустим, у вас есть multihome-машина, т.е. ей присвоено несколько разных IP-адресов помимо "127.0.0.1". На ней крутится NginX и стопицот виртуальных хостов (сайтов) вида

Теперь вы берете и добавляете стопицот-первый сайт вида

Угадаете что случится? Ответ под спойлером.

[Spoiler (click to open)]

Все предыдущие 100500 сайтов дружно разом набекренятся.

Угадаете почему? Напишите в комментах, если сомневаетесь.

Я относительно недавно положил таким макаром прод примерно на час, пока не заметили. И на старуху бывает проруха. Но даже и не это самое смешное. Примерно в тот же самый день на совершенно другой площадке ровно таким же способом положил другой пре-прод сервис мой коллега. Аккуратно надо с этим listen, ох аккуратно!

Ситуация 2.

Допустим, есть вот такая конструкция

Угадайте, будет ли такая конструкция работать на практике? Ответ под спойлером.

[Spoiler (click to open)]

Сильно зависит от директивы "блаблабла". Если это "proxy_pass" — то будет. Если "root" — не будет.

Почему? А хрен его знает, товарищ прапорщик. Собака след не берёт, нюхайте читайте исходные коды сами. Я встречал упоминания о том, что там как-то завершается или не завершается обработка того или иного запроса перед тем как он будет перенаправлен в тот или иной location. Но вообще, на мой взгляд, логики в таком поведении маловато.

Ситуация 3.

Допустим, вам хочется в ответ на 403 Forbidden отдавать какую-то кастомную красивую страничку. Ну и вы такие, не подозревая засады

Будет такое работать? Ответ под спойлером.

[Spoiler (click to open)]

Будет, но есть нюанс. Красивая кастомная 403-страница действительно будет отображаться, только вот реальный код ответа от сервера будет 200, а не 403.

Какая разница, спросите вы? Для мясного человека — никакой. А вот если ваш сервис помимо прочего подразумевает M2M-взаимодействие (Machine-to-Machine), всё становится намного грустнее. Причём, лично мне пока что неизвестно ни одного способа заставить nginx возвращать именно 403-й код ответа с использованием кастомной 403-страницы в такой постановке задачи. Причём, это касается не только 403-го кода, а в принципе, любых кодов ошибок.

Так что не так прост этот ваш nginx, как его малюют.

... Еще из интересного. Тут один заказчик выдал виртуалки под outsource-проект и зачем-то выставил в системных переменных "vm.panic_on_oom = 1". Мне до сих пор интересно, чем думали эти пидорасы. Ночь моей работы ушла в сортир, когда в процессе миграции одного сервиса он вывалился по OOM. А доступа к гипервизору у меня, разумеется, нет. Наверное, это всё делали как раз вот такие мамкины сисадмины по готовым инструкциям откуда-то из интернета, не особо вникая в суть. А я проглядел. Или они реально собирались сидеть изучать дампы памяти ядра после падения Java-приложения по нехватке памяти? Вы серьёзно?

... Я думал, что FIDO — это некогда популярная компьютерная сеть. А оказывается, это "Fast IDentity Online"...

Всем послушного nginx-а, достаточного количества оперативной памяти и быстрой онлайн-идентификации.

Tags: it, nginx, грабли, софт, трудовыебудни
Subscribe

  • Запреты интернетов (для кнопочных телефонов)

    И нет, я сейчас не про очередные российские загоны и чебурнеты. Хотя частично они упоминаться всё равно будут, куда ж без них. Допустим, вы купили…

  • ОколоITшный дыбр #105

    ... Чё-то нумерация "мимолётных мыслей" пошла вровень с нумерацией "дыбра". Не перепутайте. :) ... По долгу службы в интересах…

  • Мимолётная мысль #103

    ... Интересно, сколько ещё российские власти будут безуспешно пытаться поддерживать угледобывающую отрасль прежде чем дойдут до пятой стадии, та…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 19 comments

  • Запреты интернетов (для кнопочных телефонов)

    И нет, я сейчас не про очередные российские загоны и чебурнеты. Хотя частично они упоминаться всё равно будут, куда ж без них. Допустим, вы купили…

  • ОколоITшный дыбр #105

    ... Чё-то нумерация "мимолётных мыслей" пошла вровень с нумерацией "дыбра". Не перепутайте. :) ... По долгу службы в интересах…

  • Мимолётная мысль #103

    ... Интересно, сколько ещё российские власти будут безуспешно пытаться поддерживать угледобывающую отрасль прежде чем дойдут до пятой стадии, та…