включить редактирование

Настройка Nginx

Создан:

Apache — одна из программ, которые сделали Сеть такой, какова она сегодня. Бесплатное пользование столь мощным web-сервером позволило людям делать такие вещи, которые без него были бы невозможны или запретительно дороги. Вместе с Linux, MySQL и PHP Apache является частью стека LAMP, фактического стандарта для web-серверов. Однако, MySQL утратил позиции на крупных сайтах, будучи слишком велик и тяжеловесен. Apache тоже не назовешь легким, и популярность набирает более молодой и более компактный web-сервер — Nginx (произносится "engine-X" [энджин-икс]
В базовом варианте он работает более или менее так же, как Apache. Он должен быть в вашем менеджере пакетов (в Red Hal и его производных сначала нужно включить репозитории EPEL, Extra Packages for Enterprise Linux — дополнительные пакеты для Enterprise Linux), поэтому установите его. В дистрибутивах на базе Debian это можно сделать командой

sudo apt-get install nginx

Она установит Nginx. Если у вас еще нет web-сервера на порту 80, то открыв в браузере "localhost", вы увидите страницу приветствия Nginx.
Если у вас уже есть сервер на порту 80, сейчас мы переключим порты. Файл настройки Ngninx находится в каталоге /etc/nginx/sites-enabled. Откройте файл default из этого каталога в текстовом редакторе (учтите: редактор, возможно, потребуется запустить с sudo). Замените строки listen 80;

listen [::]:80 
listen [::]:80 default_server ipv6only=on;
на
listen 8080;
listen [::]:8080 default_server ipv6only=on;

Перезапускаем сервер командами:

sudo nginx -s quit
sudo nginx

Благодаря своей архитектуре Nginx под большой нагрузкой использует гораздо меньше памяти, чем Apache.
Теперь сервер Nginx должен быть доступным на localhost:8080. Корень web-каталога должен быть в /usr/share/ningx/html (в разных дистрибутивах путь может отличаться; если по указанному пути его нет, загляните в файл default). Теперь в этот каталог можно поместить обычные HTML-документы, изображения, скрипты и т.д. и просмотреть их на localhost:8080.
Конечно, в наше время большинство сайтов содержат разнообразные скрипты и тому подобное для web-приложений, не уступающим по возможностям настольным. Nginx легче и быстрее Apache потому, что в нем многое урезано, но именно тяжеловесность делает Apache таким мощным. В конце концов, то, что для одного излишек, для другого — необходимость.
И здесь у Nginx есть веский аргумент. Nginx может сохранить мощь Apache, если выступит в качестве обратного прокси. Конечно при правильной настройке. Обратный прокси - это сервер, который находится между основным сервером и Интернетом. Он кэширует популярные запросы, а значит, обращается к основному серверу только тогда, когда запрашиваются новые ресурсы. Весь статический контент (изображения, файлы Java Script и т.д.) кэшируется в обратном прокси. Это означает, что Nginx делает всю легкую работу, а тяжеловесный сервер (типа Apache) используется только при необходимости. Так Nginx помогает популярным сайтам справиться с нехваткой ресурсов.
Если у вас уже стоит Apache, можете воспользоваться им сейчас, но для теста это будет перебором. Поэтому если у вас не запущен другой web-сервер, запустите его командой

python -m SimpleHTTPServer 8000

Она запустит web-сервер на порту 8000 для текущего каталога. Для настройки обратного прокси добавим следующую конфигурацию в файл default:

location /mуарр/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_
add_x_forwarded_for;
proxy_pass http://localhost:8000/;
}

Она должна находиться внутри основного блока server {...}. Если теперь открыть http://localhost:8000/mvapp/. Nginx отправит запрос на localhost:8000, где запущен наш web-сервер. На главном компьютере не обязательно запускать прокси-сервер, и, используя несколько таких блоков, можно указать различные пути к разным серверам, что позволит вам распределить нагрузку на приложение на несколько серверов.

Дополнительно расскажу кратко о секциях и о желательных параметрах:
Работаем не от рута

user nobody;

Ограничим производительность

worker_processes 2;

Пишем логи 

error_log /spool/logs/nginx/nginx.error_log notice; # уровень уведомлений

Секция events, тут методы доступны в зависимости от Вашей ОС и железа, ну и как это было все скомпилено.

Модули работы с событиями:
— select и poll грузят процессор большой плюс - доступны везде и всегда работают;
— kqueue и epoll — доступны только во FreeBSD и Linux 2.6 являются намного более эффективны;
— rtsig — не всегда, но может вызвать проблемы при большом ко-ве подключений; но довольно эффективный метод, и поддерживается даже древним Linux.
— /dev/poll — довольно эффективен и работает например в солярис;

worker_connections 2048; этого в полне достаточно

Далее опишем секцию http.

sendfile on; существенно повышает производительность сервера.
keepalive_timeout максимальное время поддержания keepalive-соединения. Для AJAX лучше держать подольше, для статики соединение рвать пораньше;
keepalive_timeout 15;

В настройках проксирования

proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

размер буфера для проксируемых запросов ставим не менее, чем ожидаемый размер ответа от сервера-бэкенда. Чем больше эти таймауты, тем дольше будут ждать ответа ваши пользователи, при тормозах бэкенда.
В случае, если nginx обслуживает более чем один виртуальный хост, имеет смысл создать «виртуальный хост по-умолчанию»,

# default virtual host
server {
listen 80 default;
server_name localhost;
deny all;
}

Далее секция server. Для хостера здесь пишем примерно так include /spool/users/nginx/*.conf;

Опишем секцию
server {
listen 80;

# В директиве server_name можно указать несколько имён одновременно.

server_name myserver.ru myserver.com;
access_log /spool/logs/nginx/myserver.access_log timed;
error_log /spool/logs/nginx/myserver.error_log warn;
charset utf-8; кодировка отдачи страниц по умолчанию
client_max_body_size 1m; не принимаем запросы от клиентов, более чем 1 Мб;
ssi on Включаем SSI;
ssi_value_length 1024; для SSI-переменных резервируем не более 1 Кб.

Далее жмем страницы

gzip on; включаем сжатие
gzip_min_length 1024; минимальный размер файла для того, чтобы использовать сжатие
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml;
}

location /i/ {
root $www_root/static/;
}
}

На этом все.

Автор: forkA Просмотров: 5543


Рейтинг статьи: 0

Общий рейтинг из всех статей автора :
{0 [30]} [ - - - - - - - - - - ]

Общий рейтинг из всех статей на сайте :
{0 [888]} [ - - - - - - - - - - ]

[?]
комментариев к данной статье нет

Добавить комментарий к статье


Ctrl+Enter

Для активации кнопки, введите символы, которые Вы видите на картинки.

новая

тема

Заметки на тему IT

Монитор поиска
[x]
Новое сообщение

Сообщения в чате

Вы спрашиваете у гостей/у зарегистрированных/ У Вас спрашивают
всем Ctrl+Enter
зарегистрированным Ctrl+Enter
Ctrl+Enter

Краткая инструкция по работе с чатом

  • Вы должны ввести имя, которое будет запомнено и применяться для чата и комментариев на сайте.
  • Выбрать одну из возможностей
    "Вы спрашиваете у гостей/
    у зарегистрированных/
    У Вас спрашивают"
  • Кликните на один из способов и появиться дополнительная информация