Imagesforyou.ru

IMG FOR YOU — ИНТЕРЬЕРНАЯ ФОТОСТУДИЯ
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Веб-сервер Nginx под Linux

Итак, предполагается, что есть только что установленная операционная система Ubuntu 18.04 LTS без графического интерфейса пользователя.

Перед тем как продолжить, нужно проверить доступные версии программного обеспечения дистрибутива. Выполняем команду:

В выводе результата команды можно увидеть, что доступны обновления. Рекомендуются их обновить с помощью команды (подсказка «Run ‘apt list –upgradable’»):

По завершению обновления пакетов приложений можно приступить к установке непосредственно веб-сервера.

Нужно выполнить команду команду:

Необходимо дождаться окончание выполнения команды и убедиться, что в момент установки никаких ошибок не возникло. В данном случае установка прошла без проблем.

Далее нужно проверить, что помимо самой установки, веб-сервер запустился и готов обрабатывать запросы (для данной команды использование sudo не обязательно):

В ответ можно увидеть, что состояние службы active (running). Это значит, что веб-сервер работает в штатном режиме, и можно переходить к настройке трансляции запросов либо к генерации самоподписанного сертификата (если в этом есть необходимость).

ВАРИАНТ №1. Отказоустойчивый веб-сервер nginx(keepalive)+glusterfs+mysqlreplication

Что мы будем иметь в итоге:

2 nginx балансировщика(keep alive), фронтенды будут слушать веб сервера php(php-fpm). Так же они будут “страховать друг друга”, имея один виртуальный ip – 10.1.9.176. Ip серверов 10.1.9.173 и 10.1.9.174

2 веб сервера php(php-fpm+mysql+nginx) c gluster fs для синхронизации файлов и с репликацией баз данных. Ip 10.1.9.175 и 10.1.9.177.

Операционная система: debian 8 minimal(net install) с доступом по ssh.

Server1: debian-test-1.domain.local 10.1.9.173 – основной loadbalancer(MASTER)

Server2: debian-test-2.domain.local 10.1.9.174 – резервный loadbalancer(BACKUP)

VIP(virtual IP) – 10.1.9.176 — плавающий/расшаренный между балансировщиками нагрузки виртуальный IP-адрес,на который прописаны сайты в DNS

Практическая часть

Настраиваем nginx

Устанавливаем nginx на сервере proxy:

У меня установился nginx такой версией:

Для настройки прокси создадим новый виртуальный хост:

Разбор конфига

На основных настройках я не буду заострять внимание, потому как они не относятся к настройке reverse proxy. Если вкратце там мы указали какие порты слушает наш сервер, корень сайта, индексные страницы и имя сервера.

Читайте так же:
Голубой экран на ноутбуке без надписей

Следующие опции управляют http заголовками на прокси сервере:

  • proxy_set_header X-Scheme http; – схема по которой подключается клиент (http или https);
  • proxy_set_header X-Forwarded-Proto http; – протокол который использует клиент (http или https);
  • proxy_set_header Host $http_host; – url-адрес по умолчанию, в качестве значения можем указать следующие переменные:
    • $http_host – то что клиент фактически набрал в адресной строке в браузере;
    • $proxy_host – имя и порт проксируемого сервера (web1 или web2), как указано в proxy_pass;
    • $host – имя этого сервера, как указано в server_name (proxy);

    А следующие строки отвечают за настройку работы буферной памяти для проксируемой информации:

    • proxy_buffering on; – включаем буфер для прокси сервера;
    • proxy_buffer_size 8k; – размер буфера для первой части ответа получаемого от проксируемого сервера, такая часть ответа включает в себя только заголовки и хранится отдельно от остальной информации;
    • proxy_buffers 8 8k; – число и размер буферов для одного соединения, а вот сюда помещается ответ от проксируемого сервера.

    Теперь разберем часть где мы указываем что проксировать и куда проксировать:

    • /xxx – запрос который будем проксировать;
    • proxy_pass http://192.168.5.84/test/; – куда будем проксировать, то есть на сервер 192.168.5.84 и на каталог /test.
    • Ниже подобный блок для /yyy .

    Отключим конфиг “default“, включим созданный нами конфиг “proxy” и перезагрузим службу сервера:

    Настраиваем backend сервера

    На обоих серверах проделаем одно и тоже! Во-первых установим apache2, затем создадим новый каталог /var/www/html/test. В этом каталоге сделаем индексную страничку index.html в которую запишем имя сервера. Вдобавок поменяем владельца нового каталога на www-data.

    Проделываем следующее на обоих серверах:

    Проверка

    Используя адрес прокси сервера, откроем xxx:

    Используя адрес прокси сервера, откроем yyy:

    Как видим у нас открылись разные странички, которые лежат на разных серверах:

    • web1 лежит на сервере с адресом 192.168.5.84 в каталоге test:
    • web2 лежит на сервере с адресом 192.168.5.83 в каталоге test:

    NGINX Beyond Web Serving

    Хотя NGINX стал известен как самый быстрый веб-сервер, масштабируемая базовая архитектура оказалась идеальной для многих веб-задач, помимо обслуживания контента. Поскольку он может обрабатывать большое количество соединений, NGINX обычно используется в качестве обратного прокси-сервера и балансировщика нагрузки для управления входящим трафиком и его распределения на более медленные восходящие серверы — от устаревших серверов баз данных до микросервисов.

    NGINX также часто размещается между клиентами и вторым веб-сервером для использования в качестве ограничителя SSL/TLS или веб-ускорителя. Выступая в качестве посредника, NGINX эффективно обрабатывает задачи, которые могут замедлить работу вашего веб-сервера, такие как согласование SSL/TLS или сжатие и кэширование содержимого для повышения производительности. Динамические сайты, созданные с использованием чего-либо от Node.js до PHP, обычно используют NGINX в качестве кэша содержимого и обратного прокси-сервера, чтобы снизить нагрузку на серверы приложений и максимально эффективно использовать базовое оборудование.

    Htop является одним из эффективных способов мониторинга текущей производительности стека серверов.

    Другие инструменты мониторинга: New Relic , Netdata . Последнее решение может отправлять предупреждения для любого приложения или системного процесса по электронной почте, через Slack, pushbullet, Telegram, Twilio и т. д.

    Monit — еще один инструмент с открытым исходным кодом, который позволяет контролировать систему. В нем можно настроить отправку оповещений, перезапуск определенных процессов или перезагрузку системы при выполнении заданных условий.

    Apache vs Nginx: выбираем оптимальный веб-сервер

    Apache и Nginx – 2 самых популярных веб-сервера в мире. Оба используются для обработки HTTP-запросов, но каждый из них обладает собственным набором характеристик. В этой статье мы попробуем разобраться, чем именно отличаются эти веб-серверы и какой из них лучше подойдет в той или иной ситуации.

    История создания

    Apache был создан в далеком 1995 году, а уже через год стал самым популярным веб-сервером в мире. Основной идеей разработчика Роберта Маккула было создать гибкое и мощное ПО, которое хорошо интегрируется с другим софтом. Так и вышло – большинство сисдаминов выбирают именно динамичный Аpache, который можно дополнять функциональными модулями.

    Nginx был создан на 7 лет позже, и в какой-то мере это сыграло на руку его разработчику, Игорю Сысоеву. Он учел изменившиеся требования к софту и создал легкий веб-сервер, который отлично масштабируется и хорошо справляется с высокими нагрузками. Но с другой стороны, Nginx все еще сложно конкурировать с тяжеловесом Apache, который давно обзавелся целой армией поклонников.

    Принцип работы

    Аpache в ответ на каждый пользовательский запрос создает отдельный процесс или поток. Технология очень проста в реализации, но абсолютно не подходит для многозадачных проектов. Любой процесс «съедает» память и ресурсы системы, и ладно, если процессов мало. А если их сто, тысяча, миллион? Все-таки Аpache создан для не очень больших проектов с низким уровнем загруженности.

    Nginx работает с одним мастер-процессом – он создает дочерние процессы, которые и обрабатывают запросы. Это идеальное решение для высоконагруженных веб-проектов, которые обслуживают тысячи соединений одновременно.

    Выдача контента

    Аpache генерирует как статический, так и динамический контент, поэтому его выбирают пользователи, которые не хотят возиться с проксированием и настраивать дополнительные инструменты для работы с динамикой.

    Nginx выдает только статический контент, а вот динамику генерировать не умеет. Но, как вариант, его можно использовать в связке с Apache, PHP-PFM и любым другим web-приложением такими как Python (Django), Ruby on Rails, nodejs и другими.

    Возможности конфигурирования

    Аpache дает возможность конфигурировать обработку запросов на уровне каталогов при помощи скрытого файла htaccess. В нем можно настраивать авторизацию и аутентификацию, кеширование и права доступа пользователей. При этом менять конфигурацию можно буквально на лету, не перезагружая сервер и не залезая в основные настройки.

    В Nginx такой функции нет. На весь проект имеется только один конфигурационный файл, который обрабатывает мастер. Чтобы обновить конфигурацию, нужно отправить сигнал мастеру и перезагрузить сервер.

    Наличие модулей

    На данный момент у Аpache имеется 60 официальных модулей и еще больше любительских. Модули не требуют сборки, их можно сразу загружать в ленту.

    У Nginx существует 130 официальных модулей, но все они требуют сборки. Такой подход более сложный, но зато и более безопасный.

    Поддержка ОС

    Аpache поддерживает все Unix-подобные ОС и всю линейку Windows, включая последние обновления.

    Nginx поддерживает большинство Unix-подобных ОС и частично Windows.

    Немного статистики

    • Аpache обслуживает около 69 миллионов веб-сайтов, Nginx – почти 44 миллиона.
    • Аpache идеально подходит для использования в 229 категориях веб-сайтов, включая «бизнес и промышленность», «искусство и развлечения», «торговля», «интернет и телекоммуникации». Nginx лидирует в 9 категориях, в том числе «человек и общество», «религия и духовность», «юмор», «форумы и чаты».
    • Аpache – основной веб-сервер в 207 странах мира, включая США, Японию, Германию и Францию. Nginx предпочитают в 10 странах, в том числе Украине, Китае, Индонезии и России.

    И Apache, и Nginx – высоконадежное и безопасное ПО, пользующееся популярностью во всем мире. Делая выбор между ними, отталкивайтесь от загруженности проекта и требований к обработке HTTP-запросов. И не забывайте, что веб-серверы могут работать и в связке – так вы сможете использовать преимущества обеих систем.

    Для начала давайте откроем конфигурационный файл WEB сервера Nginx

    Найдите раздел HTTP, в этом разделе определяются конфигурации для HttpCoreModule Nginx. Добавьте следующую директиву:

    Это запретит Nginx отправлять номера версий в заголовке HTTP.

    Перезагрузите конфигурацию Nginx Чтобы применить это изменение:

    X-XSS-Protection

    Заголовок X-XSS-Protection может предотвратить некоторые XSS-атаки («межсайтовый скриптинг»), он совместим с IE 8+, Chrome, Opera, Safari и Android.

    Добавьте следующее в nginx.conf в разделе HTTP:

    X-Frame-Options

    Заголовок X-Frame-Options позволяет снизить уязвимость вашего сайта для кликджекинг-атак. Этот заголовок служит инструкцией для браузера не загружать вашу страницу в frame/iframe. Не все браузеры поддерживают этот вариант, так что проверьте заголовок на совместимость перед тем, как его добавлять.

    Добавьте следующее в nginx в директиве Server обычно она находится в конфигурационном файле сайта:

    X-Content-Type-Options

    Можно предотвратить атаки с использованием подмены MIME типов, добавив этот заголовок ответа HTTP. Заголовок содержит инструкции по определению типа файла и не допускает сниффинг контента. При конфигурации потребуется добавить только один параметр: “nosniff”.

    Добавьте следующую строку в файл nginx в директиве Server:

    Content Security Policy

    Чтобы предотвратить XSS-атаки, кликджекинг, внедрение кода, можно добавить заголовок ответа Content Security Policy (CSP). CSP содержит инструкции о загрузке контента из разрешенных источников.

    Добавьте следующее в секцию Server в файле nginx.conf:

    Если после внесения данной директивы сайт стал отображаться не правильно, то вам необходимо :

    По соображениям безопасности сервера рекомендуется отключить или скрыть информацию от злоумышленников, которые могут быть нацелены на ваш сервер, желая узнать, используете ли вы PHP или нет.

    Найдите ключевое слово expose_php и установите его значение в Off:

    Если вы используете PHP как FPM, то вам нужно будет перезагрузить PHP-FPM:

    После перезагрузки заголовок ответа X-Powered-By: PHP/7.4 должен отсутствовать

    Если не помогло, то прописываем в nginx.conf следующее

    Если есть вопросы, то пишем в комментариях.

    Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
    Заранее всем спасибо.

    голоса
    Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector