Nginx.conf

Содержание
Введение
sites-available
Настройка нового сайта
sites-enabled
Проверить конфиг
Статьи про Nginx

Введение

Файл конфигурации называется nginx.conf и находится в директории

/etc/nginx/

В нём довольно много комментариев и пустых строк. Инструкция по их удалению с помощью sed лежит здесь

sites-available

На практике приходится часто работать не с /etc/nginx/nginx.conf а с конфигурациями сайтов.

Выполните

ls /etc/nginx/sites-available

Если вы на только что установленном Nginx результат будет следующим:

default

Откройте файл default и найдите в контексте http → server → location → root

Либо выполните

cat /etc/nginx/sites-available/default | grep root

root /var/www/html; # deny access to .htaccess files, if Apache's document root # root /var/www/example.com;

Из результатов предыдущей команды можно сделать вывод, что нужный .html файл находится в

/var/www/html

ls /var/www/html/

index.nginx-debian.html

Проверить тот ли файл используется в данный момент можно внеся в него изменения и открыв url сервера в браузере.

Я добавлю одну строку с адресом сайта topbicycle.ru

vi /var/www/html/index.nginx-debian.html

<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <h2><a href="https://www.topbicycle.ru">topbicycle.ru</a></h2> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

Если вы отредактировали правильный файл, то результат будет таким

Welcome to Ngix

Настройка нового сайта

Чтобы создать и настроить другой сайт, например topbicycle.ru сперва создайте в /var/www/ директорию topbicycle.ru/html

sudo mkdir -p /var/www/topbicycle.ru/html

И закиньте туда index.html файл

sudo cp /var/www/html/index.nginx-debian.html /var/www/topbicycle.ru/html/index.html
sudo sed -i.bak 's/nginx/topbicycle/g;s/\.com/\.ru/g;s/\.org/\.ru/g' /var/www/topbicycle.ru/html/index.html

Скопируйте конфигурацию

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/topbicycle.ru

Удалите лишние комментарии

sudo sed -i.bak '/^\s*#/d;/^$/d' /etc/nginx/sites-available/topbicycle.ru

Файл с настройками будет выглядеть примерно так

server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { try_files $uri $uri/ =404; } }

default_server может быть только один. Из какого-то файла нужно удалить запись default_server.

Сделать это можно командой

sed -i.bak 's/\ default_server//' /etc/nginx/sites-available/topbicycle.ru

Проверить что default_server указано только в одном файле можно командой

grep -R default_server /etc/nginx/sites-enabled/

/etc/nginx/sites-enabled/default: listen 80 default_server; /etc/nginx/sites-enabled/default: listen [::]:80 default_server; /etc/nginx/sites-enabled/default: # listen 443 ssl default_server; /etc/nginx/sites-enabled/default: # listen [::]:443 ssl default_server;

root /var/www/html; нужно заменить на путь до сайта, то есть на root /var/www/topbicycle.ru/html;

server_name _; заменяем на доменное имя

Теперь файл с настройками выглядит так

server { listen 80; listen [::]:80; root /var/www/topbicycle.ru/html; index index.html index.htm index.nginx-debian.html; server_name topbicycle.ru www.topbicycle.ru; location / { try_files $uri $uri/ =404; } }

Теперь, чтобы создать ещё один сайт, назовём его heihei.ru , достаточно выполнить

sudo cp /etc/nginx/sites-available/topbicycle.ru /etc/nginx/sites-available/heihei.ru
sudo mkdir -p /var/www/heihei.ru/html
sudo cp -r /var/www/topbicycle.ru/html /var/www/heihei.ru/
sudo sed -i.bak 's/topbicycle/heihei/g' /var/www/heihei.ru/html/index.html
sudo sed -i.bak 's/topbicycle/heihei/g' /etc/nginx/sites-available/heihei.ru

sites-enabled

Следующий шаг после создания сайтов в sites-available - это добавление их в sites-enabled

Делается это с помощью создания ссылок

andrei@webserver:~$ sudo ln -s /etc/nginx/sites-available/topbicycle.ru /etc/nginx/sites-enabled/
andrei@webserver:~$ sudo ln -s /etc/nginx/sites-available/heihei.ru /etc/nginx/sites-enabled/

Проверка

andrei@webserver:~$ ll /etc/nginx/sites-enabled/

total 8 drwxr-xr-x 2 root root 4096 Nov 10 17:16 ./ drwxr-xr-x 8 root root 4096 Nov 10 17:26 ../ lrwxrwxrwx 1 root root 34 Nov 8 13:17 default -> /etc/nginx/sites-available/default lrwxrwxrwx 1 root root 36 Nov 10 17:16 heihei.ru -> /etc/nginx/sites-available/heihei.ru lrwxrwxrwx 1 root root 40 Nov 10 17:16 topbicycle.ru -> /etc/nginx/sites-available/topbicycle.ru

Также рекомендуют раскомментировать строку server_names_hash_bucket_size 64; в nginx.conf

vi /etc/nginx/nginx.conf

http { … server_names_hash_bucket_size 64; … }

Проверить корректность конфигурации

Чтобы проверить конфигурационные файлы на ошибки выполните

andrei@webserver:~$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Статьи про Nginx
Nginx
Установка
nginx.conf
Создать контейнер с Nginx