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, а рабочие процессы, процессы загрузки кэша и процессы управления кэшем должны запускаться от имени непривилегированных пользователей.
Главный процесс в основном выполняет следующие функции:
Рабочие процессы в основном выполняют следующие задачи:
Процессы загрузки кеша в основном выполняют следующие задачи:
Основная задача процесса управления кешем:
Компиляция и установка исходного кода 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;
}
}
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;
}
}
}
https://www.ttlsa.com/nginx/use-nginx-proxy/
https://help.aliyun.com/knowledge_detail/5974693.html?spm=5176.788314853.2.18.s4z1ra
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 <> <> <>
В конфигурационном файле настраивается пользовательский кэш для ограничения возможности переполнения буфера, что может предотвратить атаки с использованием переполнения буфера: client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;
Установка низкого значения timeout для предотвращения DOS-атак Все эти объявления могут быть помещены в основной файл конфигурации. client_body_timeout 10; client_header_timeout 10; keepalive_timeout 5 5; send_timeout 10;
Ограничение количества подключений пользователей для предотвращения 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 )