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>
Если вы отредактировали правильный файл, то результат будет таким
Настройка нового сайта
Чтобы создать и настроить другой сайт, например 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.conf | |
Создать контейнер с Nginx |