CloudFlare + nginx, або економимо при допомоги «кавоварки»


Добрий день, шановний %username%, жадібний читач і борець за справедливість в інтернеті!

Всі ми пам'ятаємо (гугл точно пам'ятає!), була така стаття CloudFlare + nginx = кешируем все на безкоштовному плані. У якій розглядалися основні принципи економії на тарифах і серверах, шляхом всеїдного кешування на стороні CloudFlare файлів до 512Мб.

У даному матеріалі ми пограємо з кодами відповідей нашого сервера, щоб зекономити ще більше золота щоб побудувати зіккурат і не переходити на «enterprise plan» які нам «offer» схожий результат у своїх «offers».

Читати далі →

Установка зв'язки Carbon + Graphite + Grafana + Nginx + MySQL для збору і відображення метрик в Ubuntu

Хочу поділитися досвідом встановлення та налаштування сервісу для збору і відображення метрик
Graphite
+
Grafana
.
Шукав довго, читав багато, знайшов 2 статті англійською, додав своє, у підсумку вийшла ця стаття.
Трохи передісторії..
Graphite
— система для відображення метрик (числових значень) для будь-яких властивостей сервера або домашнього ПК.
Carbon
— демон/бекенд, який пишуться метрики.
Grafana
— більш красива і зручна Web-морда
Graphite
.
І так, приступимо.
Читати далі →

Корисні сніппети для Nginx конфіги



Доброго часу доби, шановні хабравчане! У Elasticweb ми негласно ратуємо за Nginx і, напевно, ми одні з небагатьох хостингів, які не підтримують Apache і .htaccess відповідно. У зв'язку з цим, велика кількість звернень в тех. підтримку пов'язане з наданням допомоги в написанні конфігураційного файлу для Nginx. Тому ми вирішили зібрати колекцію корисних фрагментів і колекцію готових Nging конфіги для найбільш популярних CMS/CMF/Фреймворків на PHP.


Читати далі →

NGINX як балансувальник навантаження для MySQL або MariaDB Galera Cluster

Дана стаття є перекладом оригінальної статьи з сайту Severalnines.

Nginx добре відомий усім за свої розширені можливості і ефективність в якості проксі і/або балансувальника веб-додатків з низьким споживанням пам'яті. Як правило, nginx використовується на першій лінії оборони" веб додатків, щоб розподіляти навантаження на сервера бек-ендом, періодично перевіряючи їх працездатність. Дана технологія досить популярна для додатків, яким потрібна підвищена відмовостійкість.



Читати далі →

JavaScript і Nginx = nginScript, а HTTP2 на додачу



Справа була ввечері, робити було нічого, але голова рукам спокою не давала і хотілося чогось для душі… А для душі захотілося чогось новенького, такого незвичайного.

Я, як і багато хто з хабровчан, люблю новинки. Реліз нового софта — це як свято. Нові фічі, нові можливості… Нові способи забивати цвяхи і кататися на велосипедах. Нові велосипеди… загалом можна придумати купу алегорій і метафор. А про що це я? Ах так, про Nginx, HTTP2 і JavaScript. Чим вони пов'язані, запитаєте ви? А тим, що в останній версії Nginx (1.9.5) додали багато цікавих штучок, а саме:
  • додали протокол HTTP2 і видалили моудль SPDY (нафіг старе барахло)
  • інтегрували прямо в nginx модуль ngx_http_js_module і створили свій діалект JavaScript
Го під кат, розповім деталі.

Читати далі →

Опублікована тестова версія модуля HTTP/2 для NGINX

Представлена альфа версія патча, забезпечує підтримку HTTP/2 для NGINX. Для даного патча необхідний NGINX версії 1.9.0 або новіше. Повна підтримка протоколу HTTP/2 для комерційної і некомерційної версій NGINX планується до кінця цього року. Відгуки можна надсилати на розсилку nginx-devel.

Так як патч є альфа версією, не рекомендується його використовувати в робочих проектах. Якщо є бажання використовувати особливості HTTP/2 для робочих сайтів, слід звернути увагу на NGINX версії 1.5.10 і більш нових, в яких реалізована повна підтримка протоколу SPDY/3.1. Як попередник HTTP/2, SPDY володіє такими ж перевагами, як і HTTP/2, але в той же час має більш широку підтримку серед актуальних версій браузерів.

Читати далі →

Обмеження кількості спроб введення пароля веб-формою авторизації WordPress за допомогою Nginx або HAProxy

Розглянемо на прикладі WordPress спосіб посилення безпеки за допомогою обмеження кількості HTTP-запитів до форми введення пароля. Це дозволить захистити опублікований блог від брутфорса (пошуку і злому пароля шляхом перебору всіх теоретично можливих варіантів з певного набору символів або підбору за словником поширених паролів). Даний спосіб, в принципі, можна використовувати і для захисту інших веб-додатків.

Задача може бути реалізована в Nginx з допомогою модуля ngx_http_limit_req_module [1], виступаючому в ролі фронт-енду до Apache або веб-сервера FastCGI, або ж з допомогою HAProxy [2, 3], виступаючому в ролі балансувальника навантаження перед веб-серверами.

В обох випадках алгоритм роботи наступний. При аутентифікації браузер звертається за адресою, що містить в собі підрядок "/wp-login.php". Необхідно відстежити її і обмежити кількість запитів з однієї IP не зачіпаючи звернення за всіма іншими адресами. Параметри блокування необхідно підібрати таким чином, щоб не створювати незручностей звичайними користувачами. Особливо уважно слід налаштовувати блокування в тому випадку, коли формою авторизації користується велика кількість користувачів з однієї IP-адреси.


Читати далі →

Як і навіщо ми робимо TLS в Яндексі

Я займаюся в Яндексі продуктової безпекою і, здається, зараз саме час детальніше, ніж вже було на YaC, розповісти на Хабре про те, як ми впроваджуємо TLS в Яндексі.

Використання HTTPS-з'єднань є важливою частиною безпечного веб-сервісу, так як саме HTTPS забезпечує конфіденційність і цілісність даних на етапі передачі їх між клієнтом і сервісом. Ми поступово переводимо всі наші сервіси тільки на HTTPS-з'єднання. Багато з них вже працюють виключно за нього: Паспорт, Пошта, Директ, Метрика, Таксі, Яндекс.Гроші, а також всі форми зворотного зв'язку, що мають справу з персональними даними користувачів. Яндекс.Пошта вже більше року навіть обмінюється даними з іншими поштовими сервісами по SSL/TLS, підтримують це.



Всі ми знаємо, що HTTPS — це HTTP, загорнутий у TLS. Чому TLS, а не SSL? Тому що принципово TLS — це новий SSL, при цьому назву нового протоколу найбільш точно характеризує його призначення. А в світлі уразливості POODLE можна офіційно вважати, що SSL більше використовувати не можна.

Читати далі →

Отримуємо IP-адреси HTTPS-клієнтів з HAProxy (frontend) на Nginx (backend) в режимах HTTP і TCP-балансування

Досить часто потрібно балансувати навантаження між декількома веб-серверами. При цьому, як правило, необхідно, щоб веб-додатки отримували реальні IP-адреси клієнтів, а не IP балансувальника.

У разі балансування та термінації HTTP(S)-трафіку на HAProxy (Layer 7 [1]) ця задача легко вирішується додаванням заголовка «X-Real-IP» і його обробкою на Nginx за допомогою модуля ngx_http_realip_module [2]. При балансуванні TCP трафіку від HTTPS-клієнтів і передачі його на веб-сервера напряму без модифікації або термінації (Layer 4 [3]) додати даний заголовок неможливо, тому потрібно скористатися можливостями, наданими Proxy Protocol [4, 5, 6].

Розглянемо обидва варіанти (балансування L7 і L4) на прикладі витягів з конфігураційних файлів haproxy 1.5.9 і nginx 1.6.2


Читати далі →

CloudFlare + nginx = кешируем все на безкоштовному плані


У безкоштовної версії Cloudflare все чудово (їй-богу казка!), але список кешируемых форматів файлів вельми обмежений.
На щастя кешування всього підряд (до 512 Мб файл) можна налаштувати один дві дії.


Читати далі →