Nginx первое знакомство.
Nginx первое знакомство.
Рассмотрим первоначальный запуск и простое конкурирование.
Все дело производилась на:
$ sb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
Как обычно установка проста для Ubuntu, Debian, но в репозитории находится устаревшая версия nginx:
nginx:
Installed: (none)
Candidate: 1.1.19-1ubuntu0.2
Для информации в:
Ubuntu 12.10 (Quantal Quetzal) - nginx 1.2.1
Ubuntu 13.04 (Raring Ringtail) - nginx 1.2.6
На данный момент в дополнительных репозиториях для Ubuntu 12.04.2 LTS (Precise Pangolin) присутствует nginx 1.4.1-1~precise, вот его и поставим,
подключаем репозиторий для Debian/Ubuntu и для проверки подлинности подписи репозитория nginx добавляем ключ:
$ wget http://nginx.org/keys/nginx_signing.key
--2013-07-09 12:06:39-- http://nginx.org/keys/nginx_signing.key
Resolving nginx.org (nginx.org)... 206.251.255.63
Connecting to nginx.org (nginx.org)|206.251.255.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1559 (1.5K) [text/plain]
Saving to: `nginx_signing.key'
100%[===================================================>] 1,559 --.-K/s in 0s
2013-07-09 12:06:40 (114 MB/s) - `nginx_signing.key' saved [1559/1559]
$ sudo apt-key add nginx_signing.key
OK
Для Debian замените codename на кодовое имя дистрибутива, и добавьте в конец файла /etc/apt/sources.list следующее:
deb http://nginx.org/packages/debian/ codename nginx
#deb-src http://nginx.org/packages/debian/ codename nginx
Для Ubuntu замените codename на кодовое имя дистрибутива, и добавьте в конец файла /etc/apt/sources.list следующее:
deb http://nginx.org/packages/ubuntu/ codename nginx
#deb-src http://nginx.org/packages/ubuntu/ codename nginx
Для Debian/Ubuntu затем выполните команды:
$ apt-get update
$ apt-cache policy nginx
nginx:
Installed: (none)
Candidate: 1.4.1-1~precise
Version table:
1.4.1-1~precise 0
500 http://nginx.org/packages/ubuntu/ precise/nginx i386 Packages
1.1.19-1ubuntu0.2 0
500 http://ru.archive.ubuntu.com/ubuntu/ precise-security/universe i386 Packages
500 http://ru.archive.ubuntu.com/ubuntu/ precise-updates/universe i386 Packages
1.1.19-1 0
500 http://ru.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
$ apt-get install nginx
Все конфигурационные файлы хранятся в /etc/nginx и /etc/nginx/conf.d .
В etc/nginx/conf.d обнаружите файл default.conf, который и отвечает за показ приветственного сообщения.
Создадим свой тестовый конфиг, и с начало рассмотрим его структуру
Главный блок — server:
server {
.. ….
}
В блок можно вставить директиву. Директивы бывают простые и блочные.
- простые заканчиваются точкой с запятой ; ,
( error_page 500 502 503 504 /50x.html; )
- блочные же открываются и закрываются фигурными скобками.
location = /50x.html {
root /usr/share/nginx/html;
}
Всех директив довольно много и все они представлены в wiki.nginx.org
Для начало присмотрим пару основных, и для простого сервера их хватит.
Директория — listen
Эта директива устанавливает порт на котором и будет работать сервер.
Можно указать только адрес, порт или имя сервера в строке адреса.
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;
Стандартный HTTP порт — 80, SSL — 443.
Пока мы будет использовать 80 порт, так что:
server {
listen 80;
}
Директория — server_name.
Когда nginx получает какой-либо запрос, он смотрит на URL и ищет блок server с такой же server_name директивой, в катором блоке server будет обрабатываться тот или иной запрос.
Допустим, если Ваш сайт располагается на http://example.com, Ваш server_name будет example.com.
Имена могут быть заданы точно, с помощью маски или регулярного выражения, но предпочтительнее использовать точные имена, где это только возможно:
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name *.example.org;
...
}
Возможно делать несколько блок server с другим server_name, удобно хостить несколько сайтов на одном nginx, так же с
директивой server_name можно спокойно использовать суб-домены. Например, удобно привязать к admin.example.com меню администратора.
Но пока остановимся и напишем лишь базовый конфиг:
server {
listen 80;
server_name example.com;
}
Директория root — root.
Эта директива определяет папку, в которой хранятся наши файлы, например /home/www/site. Для примера создадим там создадим файл index.html с любым кодом.
Хорошо, теперь вернемся к нашему конфигурационному файлу и добавим директиву root, Теперь он выглядит вот так:
server {
listen 80;
server_name example.com;
root /home/www/site;
}
Что б nginx узнал об изменениях в нашем конфигурационном файле, надо его перезагрузить:
$ service nginx reload
или
$ /etc/init.d/nginx reload
p.s команда service просто ссылается на конфигурационный файл, в данном случае на: /etc/init.d/nginx reload.