По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Если вы только начинаете своё знакомство с IP-АТС Asterisk и графическим интерфейсом FreePBX, может случиться так, что ваша АТС забанит вас по IP и восстановить доступ вы сможете только через консоль самого сервера или виртуальной машины. Знакомо? Тогда читай что делать в таком случае! По умолчанию во FreePBX работает встроенная защита сервера от взлома пароля методом “грубого перебора”, известного в простонародье как брутфорс (bruteforce). Этот механизм называется fail2ban и предназначен он для того, чтобы ограничивать возможным злоумышленникам доступ к компонентам сервера. В случае с FreePBX может случиться ситуация, когда сервер примет вас за возможного злоумышленника и ограничит вам доступ по SSH (порт по умолчанию 22). Представьте - вы только установили FreePBX, зашли в web-интерфейс начали проводить настройки, но тут вам понадобилась консоль сервера. Вы открываете putty, вводите адрес и порт сервера, затем логин, а потом пароль. Сервер отвечает, что пароль не правильный Access denied. “Неправильно ввёл, с кем не бывает” – подумаете вы и повторите попытку. Так вот если вы 5 раз неправильно введёте пароль, то на шестой увидите следующую картину при попытке подключиться к серверу: Данная статья описывает ситуацию, которая может случиться на тестовых системах или же - на свежих системах, которые установлены недавно. Команда Мерион Нетворкс ни при каких условиях не рекомендует использовать советы из данной статьи на системах, работающих в Production режиме... Никогда. Однако! Если у вас остался доступ к вэб интерфейсу FreePBX, то ещё не всё потеряно. Начиная с версии 13, во FreePBX появился модуль Firewall, который как раз и отвечает за работу fail2ban. Поэтому, чтобы заново открыть себе доступ к серверу, мы этот модуль не на долго отключим. Для этого прыгаем в Connectivity → Firewall и жмём Disable Firewall: Отлично, теперь, чтобы сервер нас больше не банил мы немного подредактируем настройки fail2ban. Для этого, опять подключаемся к серверу по SSH и редактируем файл /etc/fail2ban/jail.local любым текстовым редактором, например vim: vim /etc/fail2ban/jail.local Найдите секцию [DEFAULT] и добавьте в опцию ignoreip адрес, с которого вы подключаетесь к серверу. Адреса можно добавлять через пробел в одну строку, можно также добавлять целые сети. После этого не забудьте заного включить Firewall. Connectivity → Firewall и жмём Enable Firewall Если WEB - интерфейс доступен Если доступ к WEB - интерфейсу FreePBX доступен, то просто зайдите в него, перейдите на Admin → System Admin → Intrusion Detection. В списке забаненных IP - адресов найдите нужный и удалите его. Можно это сделав, например, указав в разрешенном списке забаненный адрес с /32 маской, или подсеть. После этого нажмите Restart. Готово.
img
Наряду с Laravel, существует множество PHP-фреймворков с достаточно мощными техническими возможностями, такие как Symfony, CodeIgniter, Phalcon и другие. Тем не менее, Laravel бесподобен. Именно поэтому, наверное, этот фреймворк обрел широкую популярность за последние несколько лет. Он до сих пор входит в топ GitHub, с большим, чем 62k звездами. В данной статье обсудим Laravel, почему он так распространен, а затем некоторые из лучших хостинг платформ где установлен Laravel. Что такое Laravel? Laravel - часто используемый PHP-фреймворк с открытым исходным кодом, созданный в 2011 году Тейлором Отвеллом. Он используется для разработки от простых веб-сайтов до сложных веб-приложений. Он основан на архитектуре MVC (model, view, controller). Принцип этой архитектуры - разделение входных, выходных данных и основного функционала интерактивных приложений на отдельные составляющие, что позволяет писать хорошо отлаженный, гибкий и простой в обслуживании код. Есть и другие причины, по которым Laravel знаменит: Объектно-ориентированный подход с выразительным синтаксисом Встроенная авторизация и аутентификация Пакетная система для ускорения разработки приложений Несколько файловых систем - локальное хранилище и облачное хранилище, например RackSpace и Amazon S3 Консоль Artisan для управления миграциями баз данных, публикации ресурсов пакетов и т.д. Мощный ORM Отличные показатели при тестировании Трансляция и планирование задач Учитывая популярность данного фреймворка, недостатка в хостинг-платформах для него нет, но не все они имеют нужный функционал и надежность. И если решили работать с Laravel и хотите выжать максимальную пользу из этой PHP-фреймфорка, важно использовать надежную платформу. Технически приложение на Laravel можно разместить на хостинг-платформе с поддержкой PHP, но не все они будут оптимизированы под Laravel. 1. Forge Первый кандидат - Forge. Он позволяет развертывать и предоставлять неограниченные приложения на Linode, DigitalOcean, AWS, Hetzner, Vultr и других. На сегодня Forge управляет более чем 352 тысячами приложений и заслужил доверие тысячи компаний и разработчиков. Он позволяет размещать приложения на нескольких облачных среда на ваш выбор. Всю заботу по установке PHP, Nginx, MySQL, Redis, Postgres и других важных программ Forge берет на себя. И не надо беспокоиться по поводу обновления всего арсенала вручную. Буквально простым нажатием можно развернуть коды из GitHub или Bitbucket. Для эффективной совместной работы членам команды можно выдавать разные права на панель управления сервером. Forge предоставляет функцию изоляции пользователей, которая помогает разделять и защищать учетные записи пользователей. Аутентификация сервера выполняется по протоколу SSH, но необходимый брандмауэр не используется. Управлять сервером можно с помощью удобной веб-панели или API. На Forge достаточно хорошо организована интеграция с LetsEncrypt, так что можно получить SSL сертификаты бесплатно. Он предлагает доступные планы, которые начинаются с $12 в месяц за 1 сервер, неограниченное развертывание и сайты, а также функцию Push-to-Deploy. 2. A2 Hosting Если нужно чтобы веб-сайт работал отлажено и показывал высокую производительность, а это нужно, то следует обратить внимание на уже известный читателям нашей базы знаний хостинг-провайдера A2. A2 Hosting обеспечивает высокопроизводительный серверный хостинг для Laravel на платформе SwedingServer. Также можно выбрать опцию Turbo Servers, что даст в 20 раз большую производительность, чем стандартный план. Их серверы оснащены твердотельными накопителями, а Turbo Server имеет AMD EPYC с драйверами NVMEe. В результате можно ожидать, что процессоры будут на 40% быстрее, скорость записи/чтения - в 3 раза, время до первого байта (TTFB) - в 2 раза, а трафик будет обрабатываться в 9 раз быстрее. Установка Laravel буквально производится одним щелчком мыши. Их практика Perpetual Security помогает уменьшить количество интернет-угроз, постоянно скрывающихся в Интернете. Для всех планов бесплатно доступны защита HackScan, которая блокирует попытки взлома, обновления KernelCare, двусторонний брандмауэр, защита от подбора, DDoS и другие функции безопасности. A2 Хостинг удобен для разработчиков и ориентирован на предоставление лучших версий программного обеспечения для разработки с момента его создания в 2003 году. Вы можете выбрать несколько версий PHP, MySQL, MariaDB, Python, PostgreSQL, Apache, SSH доступ и бесплатный SSL. A2 Хостинг предлагает бесплатную миграцию учетных записей. Они также гарантируют 99,9% времени безотказной работы, так что на них можно положиться. Цены начинаются всего с $2,99 за 1 сайт, 100GB SSD и другие функции. Он также включает 30-дневную гарантию возврата денег. 3. Cloudways Cloudways, обеспечивает почти в 300 раз высокую скорость работы сервера и полностью оптимизированную для веб-приложений производительность. Он поставляется с функциями хостинга высшего класса, которые помогают легко управлять приложением. Cloudways помогает повысить производительность приложения с помощью предварительно настроенных решений оптимизации, таких как PHP-FPM, Redis, Supervisord и других. Вы получаете хостинг на базе твердотельных накопителей с выделенным IP-адресом, чтобы пользоваться полным контролем над вашим сервером. Для более быстрой доставки контента здесь используется продвинутый стек приложений, который включает в себя современные технологии кэширования, такие как Lacnish, Memcached и CloudingCDN. Для обеспечения безопасности Cloudways регулярно обновляет брандмауэры и микропрограммы на уровне платформы. Для защиты от злоумышленников в дополнение к двухфакторной аутентификации можно использовать белый список IP-адресов. Хостинг предлагает возможность автоматического резервного копирование каждый час или каждые 7 дней и функцию автоматического восстановления. Также можно выбрать частоту резервного копирования исходя из нужд проектов. Cloudways использует таких поставщиков IaaS, как AWS, GCE, Linode, DigityOcean и Vultr, для размещения приложений в более чем 60 центрах обработки данных по всему миру. Это дает вам гибкость вертикального масштабирования, и нет сковывающего вас долгосрочного контракта. Cloudways поддерживает интеграцию Git, клонирование серверов и приложений, а также области размещения, что способствует эффективной совместной работе путем добавления членов группы. Цена зависит от выбранной платформы IaaS. 4. Servebolt Servebolt предлагает удобную среду Laravel, предоставляя Git, Composer и другие инструменты командной строки. Его серверы способны адаптироваться к настройкам и пользовательским рабочим процессам. Провайдер предлагает полное управление сервером с помощью SSH-доступа и быстрых баз данных для исключительной производительности. Servebolt предлагает устойчивую сеть, а также мониторинг серверов 24/7/365 для обеспечения высокой производительности и стабильности. Они обеспечивают интеграцию Git на панели управления с webhooks, что удобно для автоматизированного развертывания. Вы также можете интегрировать такие популярные инструменты, как Codeship, DeployHQ, Capistrano, StartCity, Jenkins и другими. Servebolt предоставил вам бесплатную помощь миграции. Они также обеспечивают 99,90% гарантии безотказной работы, включая SLA. 5. fortrabbit fortrabbit является одним из лучших провайдеров для хостинга Laravel и получил хорошие отзывы от своих пользователей. Он предлагает довольно простую установку Laravel и позволяет развертывать коды через Git push, поручая Composer обрабатывать остальное. Он имеет отзывчивое сообщество и известен своим качеством поддержки клиентов. Функции, входящие в состав fortrabbit, представляют собой полностью управляемые серверы с твердотельным накопителем, что обеспечивает высокую скорость работы. Поскольку сервер поддерживает масштабирование, его можно увеличивать или уменьшать в зависимости от потребностей. Кроме того, вы получаете поддержку SSH и SFTP, HTTPS, резервное копирование серверов и PHP 7. Они также предоставляют вам Memcache, чтобы в свою очередь обеспечивает высокую скорость и уменьшает нагрузку на базу данных. 6. ServerPilot ServerPilot позволяет размещать приложения и сайты Laravel на таких популярных платформах, как DigityOcean, с его простым, но интуитивно понятным интерфейсом и автоматизированным управлением серверами. Достаточно установите Ubuntu и ServerPilot сам построит стек приложений, настроит брандмауэры и т. д., подключив облачный сервер. На ServerPilot разработчики и агентства могут выбрать несколько версий Laravel. Гибкость и скорость поддерживаются за счет оптимизации Apache, Nginx, PHP-FPM. На одном сервере можно разместить несколько приложений Laravel. ServerPilot обеспечивает автоматизированную защиту, созданную исследователями, и включает автоматические обновления серверов и SSL-сертификаты с поддержкой HTTP/2. В дополнение к просмотру журналов и управлению производительностью приложений, можно отслеживать состояние сервера и получать подробные статистические данные. На данном хостинге также можно изолировать приложения, чтобы предотвратить случайное разрушительное влияние небезопасных плагинов, размещенные на том же сервере, на другие части сайта,. Цена ServerPilot начинается с $5/сервер в месяц, включая $0,50/приложение. 7. FastComet Облачный хостинг Laravel, предоставляемый SunComet, эффективен и экономичен. Они помогают развертывать и оптимизировать облачный сервер не за несколько часов, а за несколько минут. Даже можно бесплатно запросить перенос Laravel с помощью экспертов технической поддержки хостинг-провайдера. FastComet предлагает cPanel, самую мощную и популярную панель управления хостингом, включая удобную управление учетными записями. С помощью твердотельных накопителей можно получите доступ к файлам на 300% быстрее. Вы можете управлять всем, как профессионал с доступом ROOT. Еженедельное или ежедневное автоматизированное резервное копирование вместе со снимками данных по требованию. FastComet позволяет изменять размер сервера в любое время в зависимости от ваших потребностей. С помощью RocketBooster провайдер обеспечивает превосходную производительность и мониторинг серверов. FastComet защищает ваши серверы от угроз в Интернете с помощью SunGuard и информирует сети о вредоносных атаках. Его набор средств защиты включает полную изоляцию учетных записей, защиту от грубого перебора, брандмауэр, предотвращение DDoS, обнаружение вредоносных программ и удаление, а также фильтр ботнетов. SunComet имеет 9 глобальных центров обработки данных корпоративного уровня, а также 200 точек доступа Anycast Network для глобальной сети CDN. 8. Vapor А для тех, кто предпочитает безсерверные решения, есть Laravel Vapar - платформа для безсерверного развертывания Laravel, которая работает на базе AWS. Его масштабируемость - это то, чем вы увлекаетесь при использовании его платформы без сервера. Он не требует обслуживания сервера, и его можно автоматически масштабировать по требованию в течение нескольких секунд. Можно создавать, восстанавливать и управлять традиционными базами данных без сервера непосредственно с интуитивно понятной панели мониторинга Vapar. Получите всю необходимую скорость для хостинга Laravel как Vapar предоставляет вам возможность создавать кластеры ElastiCache, Redis и легко управлять ими. Наслаждайтесь мощью бессерверных вычислений, записывая и отправляя задания Laravel, и вы увидите, как сотни заданий выполняются одновременно без какой-либо конфигурации. Потоковый файл легко загружается в S3 с помощью встроенных утилит JavaScript. Хостинг предлагает отслеживание метрики приложения о базах данных, приложениях и кэшах. Они также предупреждают вас в случае, если производительность не достигает нужной отметки. Для увеличения скорости загрузки сайта, Vapor автоматически загружает и сохраняет данные через CloudFront CDN или S3. Есть возможность управления DNS-записями приложения из интерфейса командной строки или пользовательского интерфейса. В дополнение к этому вы получаете несколько сред для вашего приложения, быстрые откаты в случае ошибок и бесконечные развертывания. Цена Laravel Vapor начинается от 39 долларов в месяц. Заключение Выбор в пользу того или иного из перечисленных выше хостингов для приложений Laravel не будет проигрышным выбором. Тем более, что большинство из них гарантируют возврат денег, так что можно попробовать и выбрать именно то, что лучше всего подходит для ваших нужд.
img
В этом руководстве узнаем, как настроить сервер Nginx для производственной среды. Тестовый веб-сервер отличается от рабочего сервера в планах безопасности и производительности. По умолчанию, веб-сервер Ngnix готов к работе сразу после установки. Тем не менее, настройки по умолчанию недостаточны для рабочего севера. Поэтому мы сфокусируемся на настройке сервера для большей производительности в случае высокой и нормальной нагрузки, а также на настройках безопасности в целях защиты от любопытного пользователя. Если у вас не установлен веб-сервер, можете узнать, как сделать это перейдя по ссылке. Здесь показано как установить Ngnix на Unix платформы. Рекомендуется выбирать установку из исходного кода, так как обычный релиз не включает некоторые модули, используемые в этом руководстве. Настройка производительности и безопасности Nginx Требования У вас должны быть установлены нижеследующие компоненты и убедитесь, что веб-сервер запущен на системе на базе Debian, например Ubuntu. Ubuntu или любая система семейства Debian wget Vim (текстовый редактор) Также имейте ввиду, что некоторые команды из этого руководства придется запускать от имени привилегированного пользователя пользуясь командой sudo. Разбор структуры конфигурации Nginx В этом разделе рассмотрим следующие вопросы: Структура Nginx Разделы событий, HTTP и Mail Правильный синтаксис Nginx В конце раздела узнаете об структуре конфигурационного файла Nginx, роль и назначение каждого раздела и как задавать директивы внутри разделов. Весь файл конфигурации Nginx разделен на такие разделы, как event section, http section, mail section и т.д. Основной конфигурационный файл расположен по пути /etc/ngnix/ngnix.conf, а другие - /etc/nginx. Основная секция В этой секции расположены директивы, для которых нет специальных разделов. Такие директивы как user nginx, worker_processes 1, error_log /var/log/nginx/error.log warn, pid /var/run/nginx.pid могут быть расположены в этом разделе. Но некоторые из этих директив могут быть в секции event, например werker_processes. Разделы (Секции) В Nginx разделы используются для определения конфигурации разных модулей. Например, секция http section содержит настройки ngx_http_core module, секция even section определяет настройки ngx_event module, а секция mail хранит настройки модуля ngx_mail module. Список доступных разделов можно просмотреть по этой ссылке. Директивы Директивы в Nginx состоят из имени переменной и ряда аргументов. Например, директива worker_processes – имя переменной, а auto – значение: worker_processes auto; В конце каждой директивы обязательно нужно поставить точку с запятой ; Наконец, файл конфигурации Nginx должен соответствовать определенному набору правил. Ниже приведен допустимый синтаксис конфигурации Nginx: Директивы начинаются с имени переменной, а затем следуют один или несколько аргументов Директивы заканчиваются точкой с запятой ; Разделы определяются фигурными скобками {} Раздел может быть внутри другого раздела Конфигурация вне любого раздела является частью глобальной конфигурации Nginx. Строки, начинающиеся со знака #, являются комментариями. Настройка производительности Nginx В этой части мы сконфигурируем Nginx для лучшей работы как во время интенсивного трафика, так и во время пиковой нагрузки. Будут рассмотрены следующие настройки: Workers Активность Ввода/вывода диска Сетевой активности Буферов Сжатия Кеширования Времени ожидания Итак, в терминале введите следующую команду, чтобы перейти в директорию nginx и показать ее содержимое: cd nginx && ls Найдите папку conf. В этой папке и находится файл nginx.conf. Мы используем этот файл для настройки Nginx. Теперь, чтобы перейти в папку conf и открыть файл nginx.conf с помощью редактора vim, выполните следующие команды: cd conf sudo vim nginx.conf Ниже на скриншоте показан как выглядит файл nginx.conf Workers Чтобы улучшить работу веб-сервера Nginx нужно настроить должным образом так называемые воркеры. Это своего рода потоки ядра, которые управляют параллельным выполнением процессов. Настройка воркеров дает возможность эффективней обрабатывать запросы клиентов. Если все еще не закрыли vim, нажмите i чтобы перейти к режиму редактирования nginx.conf. Скопируйте и вставьте код указанный ниже в раздел events: events { worker_processes auto; worker_connections 1024; worker_rlimit_nofile 20960; multi_accept on; mutex_accept on; mutex_accept_delay 500ms; use epoll; epoll_events 512; } worker_processes: Эта директива регулирует количество воркеров в Nginx. Значение этой директивы устанавливается на auto, чтобы разрешить Nginx определять количество доступных ядер, дисков, загрузки сервера и сетевой подсистемы. Однако можно определить количество ядер, выполнив команду lscpu на терминале. worker_connections: Эта директива задает значение количества одновременных подключений, которые могут быть открыты воркером. Значение по умолчанию - 512, но здесь оно установлено 1024, что позволяет одному воркеру одновременно принимать соединение от клиента. worker_rlimit_nofile: Эта директива как-то связана с worker_connections. Для обработки большого одновременного соединения устанавливается большое значение. multi_accept: Эта директива позволяет воркеру принимать множество соединений в очереди одновременно. Очередь в этом контексте просто означает последовательность объектов данных, ожидающих обработки. mutex_accept: Эта директива отключена по умолчанию. Но поскольку мы настроили много работников в Nginx, мы должны включить его, как показано в коде выше, чтобы позволить работникам принимать новые соединения один за другим. mutex_accept_delay: Эта директива определяет время ожидания воркера перед принятием нового подключения. После включения accept_mutex воркеру назначается блокировка mutex на период, указанный в accept_mutex_delay. По истечении этого периода следующий воркер готов принять новые подключения. use: Эта директива указывает метод обработки подключения от клиента. В этом руководстве мы решили установить значение epoll, потому что мы работаем на платформой Ubuntu. Метод epoll является наиболее эффективным методом обработки для платформ Linux. epoll_events: Значение этой директивы указывает количество событий, которые Nginx передаст ядру. Чтение/запись диска В этом разделе мы настроим асинхронные операции ввода-вывода в Nginx для обеспечения эффективной передачи данных и повышения эффективности кэширования. Дисковый ввод-вывод относится к операциям записи и чтения между жестким диском и ОЗУ. Мы будем использовать функцию sendfile() внутри ядра для отправки небольших файлов. Для задания директив можно использовать http section, location section и server section. location section и server section могут быть вложены в разделе http section, чтобы сделать конфигурацию более читабельной. Скопируйте и вставьте следующий код в location section, расположенный в http section: location /pdf/ { sendfile on; aio on; } location /audio/ { directio 4m directio_alignment 512 } Sendfile: Чтобы использовать ресурсы операционной системы, установите для этой директивы значение on. Sendfile передает данные между дескрипторами файлов в пространстве ядра ОС, не отправляя их в буферы приложений. Эта директива будет использоваться для обслуживания небольших файлов. Directio: Эта директива повышает эффективность кэширования, позволяя выполнять чтение и запись непосредственно в приложение. Directio - это функция файловой системы каждой современной операционной системы. Эта директива будет использоваться для обслуживания больших файлов, например видео. Aio: Эта директива обеспечивает многопоточность для операций записи и чтения. Многопоточность - это модель выполнения, позволяющая выполнять несколько потоков отдельно друг от друга при совместном использовании ресурсов процесса хостинга. directio_alignment: В этой директиве для переноса данных назначается значение размера блока. Она касалась директивы directio. Сетевой уровень В этом разделе мы используем такие директивы, как tcp_nodelay и tcp_nopush, чтобы небольших пакеты не ждали в очереди перед отправкой. Обычно, когда пакеты передаются в "частях", они имеют тенденцию заполнять высоконагруженную сеть. Джон Нагл построил алгоритм буферизации для решения этой проблемы. Целью алгоритма буферизации Nagle является предотвращение заполнения высоконагруженной сети небольшими пакетами. Скопируйте и вставьте следующий код в раздел HTTP: http { tcp_nopush on; tcp_nodelay on; } tcp_nodelay: Эта директива по умолчанию отключена, чтобы позволить небольшим пакетам ждать указанный период времени, прежде чем они будут отправлены одновременно. Для немедленной отправки всех данных эта директива включена. tcp_nopush: Поскольку tcp_nodelay директива включена, небольшие пакеты отправляются одновременно. Однако, если вы все еще хотите использовать алгоритм буферизации Джона Нагле, мы также можем включить tcp_nopush, чтобы собрать пакеты в одну пачку и отправлять их все одновременно. Буфер Рассмотрим, как настроить буферы запросов в Nginx для эффективной обработки запросов. Буфер - это временное хранилище, где данные хранятся в течение некоторого времени и обрабатываются. Можно скопировать код указанный ниже в раздел server. server { client_body_buffer_size 8k; client_max_body_size 2m; client_body_in_single_buffer on; client_body_temp_pathtemp_files 1 2; client_header_buffer_size 1m; large_client_header_buffers 4 8k; } Важно четко понимать, функции указанных директив client_body_buffer_size: Эта директива задает размер буфера для тела запроса. Если планируется запустить веб-сервер на 64-разрядных системах, необходимо установить значение 16k. Если требуется запустить веб-сервер в 32-разрядной системе, установите значение 8k. client_max_body_size: Если вы собираетесь обрабатывать большие загрузки файлов, необходимо установить для этой директивы значение не менее 2m или более. По умолчанию установлено значение 1m. client_body_in_file_only: Если вы отключили директиву, закомментировав ее client_body_buffer_size, а директива client_body_in_file_only включена, Nginx будет сохранять буферы запросов во временный файл. Это не рекомендуется для производственной среды. client_body_in_single_buffer: Иногда не все тело запроса хранится в буфере. Остальная часть сохраняется или записывается во временный файл. Однако если предполагается сохранить или хранить все запросы в буфер запросов в одном буфере, необходимо включить эту директиву. client_header_buffer_size: Эту директиву можно использовать чтобы дать заголовков запросов доступ к буферу. Это значение можно задать равным 1m. large_client_header_buffers: Эта директива используется для задания максимального количества и размера для чтения заголовков больших запросов. Максимальное число и размер буфера можно точно установить в 4 и 8k. Сжатие Еще одним способом оптимизации работы веб-сервера является сжатие объема данных, передаваемых по сети, является. В этом разделе мы используем директивы, такие как gzip, gzip_comp_level, и gzip_min_length, чтобы сжать данные. Вставьте следующий код в раздел http, как показано ниже: http { gzip on; gzip_comp_level 2; gzip_min_length 1000; gzip_types text/xml text/css; gzip_http_version 1.1; gzip_vary on; gzip_disable "MSIE [4-6] ."; } gzip: Если требуется включить сжатие ответа, установите значение этой директивы в on. По умолчанию он отключен. gzip_comp_level: Эту директиву можно использовать для установки степени сжатия ответа. Чтобы не тратить ресурсы ЦП, не нужно устанавливать слишком высокий уровень сжатия. По шкале от 1 до 9 лучше установить уровень сжатия 2 или 3. gzip_min_length: Устанавливает минимальную длину ответа, который будет сжиматься методом gzip. Длина определяется только из поля content-length заголовка ответа. Можно установить значение более 20 байт. gzip_types: Эта директива разрешает сжатие ответа методом gzip для указанных MIME-типов. По умолчанию, тип text/html всегда сжимается. Можно добавить другой тип, например, text/css, как показано в коде выше gzip_http_version: Эта директива позволяет выбрать минимальную HTTP-версию запроса, необходимую для сжатия ответа. Можно использовать значение по умолчанию 1.1. gzip_vary: Разрешает или запрещает выдавать в ответе поле заголовка Vary: Accept Encoding, если директива gzip включена. gzip_disable: Некоторые браузеры, такие как Internet Explorer 6, не поддерживают сжатие gzip. Эта директива использует поле User-Agent заголовка для отключения сжатия методом gzip для определенных браузеров. Кеширование Используйте функции кэширования, чтобы сократить количество обращений для многократной загрузки одних и тех же данных. Nginx предоставляет функции кэширования метаданных статического содержимого через директиву open_file_cache. Эту директиву можно поместить в разделы server, location и http: http { open_file_cache max=1,000 inactive=30s; open_file_cache_valid 30s; open_file_cache_min_uses 4; open_file_cache_errors on; } open_file_cache: Эта директива по умолчанию отключена. Включите его, если требуется внедрить кэширование в Nginx. В нем могут храниться дескрипторы открытых файлов, информация об их размерах и времени модификации, информация о существовании каталогов, информация об ошибках поиска файла — “нет файла”, “нет прав на чтение” open_file_cache_valid: Эта директива определяет время, через которое следует проверять актуальность информации об элементе в open_file_cache. open_file_cache_min_uses: Задаёт минимальное число обращений к файлу в течение времени, заданного параметром inactive директивы open_file_cache, необходимых для того, чтобы дескриптор файла оставался открытым в кэше. open_file_cache_errors: Эту директиву можно использовать, чтобы разрешить Nginx кэшировать ошибки, такие как “нет файла”, “нет прав на чтение” при доступе к файлам. Таким образом, каждый раз, когда к ресурсу обращается пользователь, не имеющий на это права, Nginx отображает тот же самый отчет об ошибке «в доступе отказано» Время ожидания Настройте время ожидания, используя директивы, такие как keepalive_timeout и keepalive_requests, чтобы предотвратить растрачивание ресурсов при длительном ожидании подключений. В разделе HTTP скопируйте и вставьте следующий код: http { keepalive_timeout 30s; keepalive_requests 30; send_timeout 30s; } keepalive_timeout: Сохраняйте связь в течение 30 секунд. Значение по умолчанию - 75 секунд. keepalive_requests: Настройка количества запросов для поддержания активности в течение определенного времени. Количество запросов можно задать равным 20 или 30. keepalive_disable: если вы хотите отключить поддержку keepalive для определенной группы браузеров, используйте эту директиву. send_timeout: Установка времени ожадания для передачи данных клиенту. Настройки безопасности Nginx В этой части рассматриваются только способы настройки безопасности самого Nginx, а не веб-приложения. Мы не будем разбирать такие методы веб-атаки, как инъекция SQL и так далее. Здесь мы рассмотрим настройки следующих параметров: Ограничение доступа к файлам и каталогам Настройка журналов для мониторинга подозрительных действий Защиту от DDoS атак Отключение вывода списка файлов и директорий Ограничение доступа к файлам и каталогам Давайте рассмотрим как можно ограничить доступ к важным и чувствительным файлам системы с помощью следующих методов. Использование HTTP Аутентификации С ее помощью мы можем ограничить доступ к конфиденциальным файлам или разделам системы, не предназначенных для публичного доступа, запросив аутентификацию у пользователей или даже администраторов. Выполните следующую команду, чтобы установить утилиту создания файлов паролей, если она не установлена. apt-get install -y apache-utils Далее создайте файл паролей и пользователя с помощью утилиты htpasswd. htpasswd входит в набор утилит apache2-utils. sudo htpasswd -c /etc/apache2/ .htpasswd mike Проверить результат работы можно командой: cat etc/apache2/ .htpasswd Скопируйте и вставьте следующий код в разделе location: location /admin { basic_auth "Admin Area"; auth_basic_user_file /etc/apache2/ .htpasswd; } Используя директиву Allow В дополнение к директиве basic_auth мы можем использовать директиву allow для ограничения доступа к указанным каталогам. Чтобы разрешить доступ как конкретным каталогам только с указанных адресов вставьте нижеследующий код в раздел location: location /admin { allow 192.168.34.12; allow 192.168.12.34; } Настройка журналирования подозрительных действий В этом разделе настроим error и access логи, чтобы вести мониторинг запросов. Их можно использовать для определения кто заходил систему в указанный период времени или какой пользователь открывал конкретный файл и т.д. error_log: Позволяет настроить запись событий в определенный файл, например syslog или stderr. Можно также указать уровень журналирования, которые требуется записывать. access_log: Позволяет регистрировать запросы пользователей в файле access.log Для этого в разделе http введите следующие изменения: http { access_log logs/access.log combined; error_log logs/warn.log warn; } Предотвращение DDoS атак DDoS атаки один из самых легкореализуемых и потому часто применяемых видов атак. Защитить свой веб-сервер от атак такого вида можно поменяв следующие настройки. Ограничение запросов пользователей Для ограничения числа запросов от пользователей можно использовать директивы limit_req_zone и limit_req. Следующий код нужно добавить в раздел location, который вложен в раздел server limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { location /admin.html { limit_req zone=one; } } Ограничение на число подключений Директивы limit_conn и limit_conn_zone можно использовать для ограничения числа подключение к конкретным зонам. Например, код указанный ниже ограничивает число подключений десятью. Код должен располагаться в разделе location раздела server server { location /products/ { limit_conn addr 10; } } Разрыв медленных соединений Директива как client_body_timeout задаёт таймаут при чтении тела запроса клиента. Таймаут устанавливается не на всю передачу тела запроса, а только между двумя последовательными операциями чтения. Если по истечении этого времени клиент ничего не передаст, обработка запроса прекращается с ошибкой 408 (Request Time-out). А client_header_timeout задаёт таймаут при чтении заголовка запроса клиента. Если по истечении этого времени клиент не передаст полностью заголовок, обработка запроса прекращается с ошибкой 408 (Request Time-out). Добавьте следующее в раздел server. server { client_body_timeout 5s; client_header_timeout 5s; } Отключение вывода списка директорий Чтобы отключить вывод директорий на странице можно использовать директиву auto_index. Она располагается в разделе location, а значение должно быть установлено в off. location / { auto_index off; } Заключение Итак, в этом руководстве показали, как можно настроить веб-сервер Nginx для более безопасной и оптимальной работы. На этом, конечно, работа не заканчивается. Если на Nginx крутится какое-то приложение с доступом в Интернет, то можно прибегнуть к облачным решениям защиты и оптимизации.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59