Pull to refresh

Nginx для разработчиков: Введение

Данный текст является вольным переводом этой статьи.

Если Вы веб-разработчик, то Вы скорее всего слышали о nginx. (произносится как engine-x. никогда не задумывался об этом — прим.переводчика)

Однако, к nginx очень немного документации, есть туториалы, но их количество не радует, есть Wiki, но там рассматриваются все возможные варианты и функции, а не базовые, в которых обычно Вы и нуждаетесь. После моих тягот и плясок с бубном я написал эту статью, где будет рассмотрено поднятие сервера и работа с ним. Вам потребуется: VPS сервер или любой другой сервер с прямым контролем, желательно свежий, чтобы избежать конфликтов со старым ПО. Если Вас заинтересовала данная тема, прошу под хабракат.

Установка


Тут все просто: стандартный apt-get — apt-get install nginx. Заходим на IP сервера через браузер, и видим приветственную надпись. Выдохнули, тут обошлось без подводных камней.

Идем далее: все конфигурационные файлы хранятся в /etc/nginx, давайте переместимся туда.
Конфиги nginx хранятся в папке sites-enabled. Если вы проверите содержимое данной папки, то обнаружите файл default, который и отвечает за показ приветственного сообщения.

Давайте создадим свой конфиг с преферансом и....
Создаем новый файл test внутри папки sites-enabled и откроем его любым текстовым редактором.

Настройка


В конфигурационные файлах nginx используется свой язык, но он довольно простой.
Главный блок — server, который выглядит вот так:

server {

}


В этот блок можно вставить директиву. Директивы бывают простые и блочные. Простые заканчиваются точкой с запятой ;, блочные же открываются и закрываются фигурными скобками. Все стандартно.

Директив довольно много, все они представлены в документации.
Для простого сервера хватит всего нескольких, сейчас мы их и рассмотрим.

listen


Ссылка на документацию — listen.
Эта директива устанавливает порт на котором и будет работать сервер.
Стандартный HTTP порт — 80, SSL — 443.
Пока мы будет использовать 80 порт, так что:

server {
  listen 80;
}


server_name


Ссылка на документацию — server_name.

Когда nginx получает какой-либо запрос, он смотрит на URL и ищет блок server с такой же server_name директивой.

Допустим, если Ваш сайт располагается на http://example.com, Ваш server_name будет example.com.
Кстати, никто и ничто не мешает сделать Вам еще один блок server с другим server_name. Согласитесь, удобно хостить несколько сайтов на одном nginx.
Еще: с директивой server_name можно спокойно использовать суб-домены. Например, удобно привязать к admin.example.com меню администратора.

Но пока остановимся и напишем лишь базовый конфиг:
server {
  listen 80;
  server_name example.com;
}


root

Ссылка на документацию — root.

Эта директива определяет папку, в которой хранятся Ваши файлы. Я храню свои файлы в /var/www, так что для примера создадим там папку example с помощью mkdir, и внутри этой папки создадим файл index.html с любым кодом.
Хорошо, теперь вернемся к нашему конфигурационному файлу и добавим директиву root, Теперь он выглядит вот так:
server {
  listen 80;
  server_name example.com;
  root /var/www/example;
}


Финальный аккорд


Проблема в том, что nginx пока еще не знает об изменениях в нашем конфигурационном файле, и отображает его старую версию. Чтобы перезагрузить nginx можно использовать команду
service nginx reload

  • Замечание: команда service на самом деле просто ссылается на конфигурационные файлы, которые apt установил в файловую систему Вашего сервера. В данном случае на: /etc/init.d/nginx reload

Теперь просто посетим IP нашего сервера и увидим уже обновленную страницу!
От переводчика:
Может быть, эта статья помогла Вам в чем-то. До новых встреч! (надеюсь)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.