1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lengchuan-Linux-Tutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Nginx-Install-And-Settings.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 23:55 959b30e

Nginx: установка и конфигурация

Nginx — это мощный высокопроизводительный веб-сервер и обратный прокси-сервер, который часто используется в качестве балансировщика нагрузки или почтового прокси-сервера.

Nginx

Описание из сети

Источник: https://help.aliyun.com/knowledge_detail/6703521.html?spm=5176.788314854.2.2.CdMGlB

Традиционные веб-сервисы, основанные на процессах или потоках, обрабатывают параллельные запросы на соединение при каждом процессе или потоке, что неизбежно приводит к блокировке при сетевых операциях и операциях ввода-вывода. Другим неизбежным результатом является низкая эффективность использования памяти или процессора. Создание нового процесса/потока требует предварительной подготовки среды выполнения, включая выделение кучи и стековой памяти, а также создание нового контекста выполнения. Эти операции требуют использования процессора, и чрезмерное количество процессов/потоков может привести к дрожанию потоков или частым переключениям контекста, что ещё больше снижает производительность системы.

На начальном этапе проектирования основной целью Nginx была высокая производительность и высокая плотность использования физических вычислительных ресурсов, поэтому он использует другую модель архитектуры. Вдохновлённый передовыми механизмами обработки операционных систем, Nginx использует модульную, управляемую событиями, асинхронную, однопоточную и неблокирующую архитектуру и широко использует механизмы мультиплексирования и уведомления о событиях. В Nginx запросы на подключение обрабатываются несколькими рабочими процессами (Worker) с небольшим количеством потоков, которые эффективно работают по принципу цикла выполнения (run-loop), и каждый Worker может параллельно обрабатывать тысячи одновременных подключений и запросов.

Если нагрузка в основном связана с приложениями с интенсивным использованием ЦП, такими как SSL или сжатие, то количество рабочих должно быть равно количеству процессоров; если нагрузка в основном связана с операциями ввода-вывода, такими как ответ на большое количество контента для клиентов, то количество рабочих процессов должно составлять 1,5 или 2 раза больше количества процессоров.

В Nginx одновременно работает несколько процессов: главный процесс (Master) и несколько рабочих процессов (Worker), а при настройке кеша также есть процессы загрузки кеша (Cache Loader) и управления кешем (Cache Manager). Все процессы имеют только один поток и в основном используют механизм общей памяти для межпроцессного взаимодействия. Главный процесс запускается от имени пользователя root, а рабочие процессы, процессы загрузки кэша и процессы управления кэшем должны запускаться от имени непривилегированных пользователей.

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

  1. Чтение и проверка правильности конфигурации.
  2. Создание, привязка и закрытие сокетов.
  3. Запуск, завершение и обслуживание рабочих процессов.
  4. Не требуется останавливать службу для повторной настройки функций.
  5. Контроль программ без прерывания, включение новых двоичных программ и откат к старым версиям при необходимости.
  6. Повторное открытие файлов журнала, реализация ротации журналов.
  7. Компиляция встроенного Perl-скрипта.

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

  1. Приём, передача и обработка клиентских подключений.
  2. Предоставление функций обратного прокси и фильтрации.
  3. Выполнение любых других задач, которые может выполнять Nginx.

Процессы загрузки кеша в основном выполняют следующие задачи:

  1. Проверка объектов кеша, хранящихся в кеше.
  2. Использование метаданных кеша для создания базы данных в памяти.

Основная задача процесса управления кешем:

  1. Проверка истечения срока действия и устаревания кеша.

Компиляция и установка исходного кода Nginx

Загрузите последнюю стабильную версию 1.8.1 с официального сайта, размер файла составляет 814 КБ. Инструкции по установке с официального сайта: https://www.nginx.com/resources/wiki/start/topics/tutorials/install/. Описание параметров конфигурации исходного кода:

Начните установку:

  • Установите зависимые пакеты: yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel.
  • Создайте несколько папок для удобства хранения файлов при последующей установке: mkdir -p /usr/local/nginx /var/log/nginx /var/temp/nginx /var/lock/nginx.
  • Загрузите исходный код: wget http://nginx.org/download/nginx-1.8.1.tar.gz.
  • Распакуйте: tar zxvf nginx-1.8.1.tar.gz.
  • Перейдите в каталог после распаковки: cd nginx-1.8.1/.
  • Настройте компиляцию:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/local/nginx/nginx.pid \
--lock-path=/var/lock/nginx/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
  • Скомпилируйте: make.
  • Установите: make install.

Запустите Nginx: сначала проверьте, были ли созданы файлы, связанные с Nginx, в каталоге /usr/local: cd /usr/local/nginx;ll, нормальный эффект должен быть следующим:

drwxr-xr-x. 2 root root 4096 3月  22 16:21 conf
drwxr-xr-x. 2 root root 4096 3月  22 16:21 html
drwxr-xr-x. 2 root root 4096 3月  22 16:21 sbin

Остановите брандмауэр: service iptables stop или добавьте порт 80 в список исключений:

  • sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT.
  • sudo service iptables save.
  • sudo service iptables restart.

Запустите: /usr/local/nginx/sbin/nginx, после запуска shell не будет вывода. Проверьте, есть ли запущенные процессы Nginx: ps aux | grep nginx, обычно отображаются три результата. Проверьте, прослушивает ли Nginx порт 80: netstat -ntulp | grep 80. Посетите: 192.168.1.114, если вы видите: «Welcome to nginx!», установка прошла успешно. Проверьте, какой конфигурационный файл Nginx использует: /usr/local/nginx/sbin/nginx -t. Обновите конфигурацию Nginx и перезапустите: /usr/local/nginx/sbin/nginx -s reload. Остановите Nginx: /usr/local/nginx/sbin/nginx -s stop. Если доступ невозможен или появляется другая информация, проверьте журнал ошибок: vim. Два виртуальных хоста используют порт 80, устанавливаются разные доменные имена:

server_name i.youmeek.com;

location / {
    root html-i;
    index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root html;
}
}

Обратные прокси и балансировка нагрузки

  • Минималистичная среда: один виртуальный сервер
    • 1 JDK
    • 1 Nginx
    • 2 Tomcat

Nginx конфигурация:

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    # Определённые адреса и порты запросов к двум Tomcat, которые будут использоваться при запросе браузера к tomcat.youmeek.com
    upstream tomcatCluster {
        server 192.168.1.114:8080;
        server 192.168.1.114:8081;

        # Добавление поля weight позволяет указать вес, чем больше значение, тем выше приоритет. По умолчанию значение равно 1, максимальное значение не указано, обычно устанавливается в 3, 5 или 7.
        # server 192.168.1.114:8080 weight=2;
        # server 192.168.1.114:8081 weight=1;
    }

    server {
        listen 80;
        server_name tomcat.youmeek.com;

        location / {
            proxy_pass http://tomcatCluster;
            index index.html index.htm;
        }
    }
}

HTTP-сервисы, привязка нескольких доменных имён

https://www.ttlsa.com/nginx/use-nginx-proxy/

Установка сторонних модулей

Создание спецификации

Включение сжатия Gzip

Защита от кражи

https://help.aliyun.com/knowledge_detail/5974693.html?spm=5176.788314853.2.18.s4z1ra

Запрет определённых пользовательских агентов (User Agents) на доступ, блокировка доступа по определённому IP

https://www.ttlsa.com/nginx/how-to-block-user-agents-using-nginx/ https://help.aliyun.com/knowledge_detail/5974693.html?spm=5176.788314853.2.18.s4z1ra <> <> <>

Кэширование Nginx

Автоматическое разделение файлов журнала Nginx

Обработка междоменных запросов Nginx

Предотвращение безопасности

В конфигурационном файле настраивается пользовательский кэш для ограничения возможности переполнения буфера, что может предотвратить атаки с использованием переполнения буфера: client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;

  1. Установка низкого значения timeout для предотвращения DOS-атак Все эти объявления могут быть помещены в основной файл конфигурации. client_body_timeout 10; client_header_timeout 10; keepalive_timeout 5 5; send_timeout 10;

  2. Ограничение количества подключений пользователей для предотвращения DOS-атак limit_zone slimits $binary_remote_addr 5m; limit_conn slimits 5;

Разное

Ресурсы

https://help.aliyun.com/knowledge_detail/5974693.html?spm=5176.788314853.2.18.s4z1ra http://www.ydcss.com/archives/466

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lengchuan-Linux-Tutorial.git
git@api.gitlife.ru:oschina-mirror/lengchuan-Linux-Tutorial.git
oschina-mirror
lengchuan-Linux-Tutorial
lengchuan-Linux-Tutorial
master