Настройка виртуальных хостов nginx(Инструкция)

Сообщения
75
Реакции
66
Помог
1 раз(а)
Многие начинающие администраторы когда либо задавались вопросом как привязать домен или создать поддомен для своего сайта.
В этой статье мы рассмотрим пример настройки виртуального хоста под управлением ubuntu 16.04.
Поехали.

Для начала у вас должен быть установлен веб-севрер nginx, если он еще не установлен, тогда проделываем следующие шаги от рутового пользователя:
Код:
sudo apt update
sudo apt install nginx
За стандартом, директории сайтов находится по пути /var/www/html, по этому мы будем проводить манипуляции в папке /var/www
Создадим директори нашего сайта:
Код:
sudo mkdir -p /var/www/example.ru/html
sudo mkdir -p /var/www/example.ru/logs
Где example.ru указываем свое название сайта или поддомена.
В папке html будут лежать файлы сайта, а в папке logs - логи.
Дальше нам понадобится не рутовый пользователь, в качестве владельца сайта:
Код:
sudo adduser user
Где user указываем имя своего пользователя.
После выполнения данной команды вам нужно будет ввести, а после подтвердить, пароль созданого вами пользователя. Запоминаем или записываем данные. Когда то они нам, возможно, будут нужны.
Создав пользователя нам нужно выдать ему права на директорию сайта, сделаем это:
Код:
sudo chown -R user:user /var/www/example.ru
Где user - имя пользователя, которого вы создали, а example.ru - название вашего сайта или поддомена.

Теперь у нас есть директория под сайт, а так же ее владелец.
Создадим страницу приветствия нашего сайта:
Код:
nano /var/www/example.ru/html/index.html
Вставив внутрь следующий текст:
Код:
<html>

    <head>
        <title>Приветствуем вас на нашем сайте example.ru</title>
    </head>
    <body>
        <h1>Если вы видите данную страницу, значит всё работает :)</h1>
    </body>
</html>
Сохраняем и закрываем файл index.html

Осталось создать виртуальный хост и включить наш сайт.
Проверим для начала подключена ли папка с конфигами в самом nginx, ищем в /etc/nginx/nginx.conf такую строку: include /etc/nginx/conf.d/*.conf;. Если ее нет - вписываем в самом конце перед скобкой.
В качестве дефолтного сайта nginx отвечает файл default, который находится по пути /etc/nginx/conf.d/default.conf
Скопируем его:
Код:
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/example.ru.conf
Вместо example.ru опять же указываем имя своего сайта или поддомена. Можно и любое другое, чтобы не заплутаться вписываем имя нашего сайта.
Отредактируем скопированный файл:
Код:
sudo nano /etc/nginx/conf.d/example.ru.conf
Дальше вносим некоторые изминения в файл:
Код:
server {


    #Слушаем 80 порт и указываем имя своего домена или ип, если первого нет.
    listen 80;
    server_name example.ru www.example.ru;

    #Указываем путь, куда будут писатся логи
    access_log /var/www/example.ru/logs/nginx_access.log;
    error_log /var/www/example.ru/logs/nginx_error.log;

    #Указываем директорию, где будет размещен наш сайт
    root /var/www/example.ru/html;
    index index.php index.html index.htm;

    #Некоторые настройки для виртуального хоста
    location ~ \.php$ {
        #Если не найден файл - выдаем ошибку 404
        try_files $uri $uri/ =404;
    }
}
Закрываем и сохраняем файл нашего виртуального хоста.
Включаем наш сайт:
Рестартим nginx и проверяем работоспособность сайта.
Код:
sudo systemctl restart nginx
Дальше в браузере переходим на наш сайт: example.ru
Если всё работает, то вы увидите страницу приветствия, которую мы создавали ранее.
На этом настройка виртуального хоста завершена, после этого можно наполнять наш сайт.

p.s. Мог что то пропустить, если такое есть - прошу поправить.

p.s.s. Тема статьи не совсем соответствует разделу, но лучше ничего не нарыл. Просьба перенести тему в случае существования такого раздела.
 
Последнее редактирование модератором:
Сообщения
317
Реакции
131
Помог
4 раз(а)
А что на счет поддоменов, как сделать?
 
Сообщения
82
Реакции
83
Помог
5 раз(а)
alabamaster1337, ровно так же. В папке /etc/nginx/sites-available дублируешь конфиг, меняешь только server_name и root (по необходимости), делаешь симлинк в /etc/nginx/sites-enabled/ перезагружаешь сервер и готово. Ну и А-запись у поддомена нужно настроить на IP адрес сервера.
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
чтото не вишло(((
при переходе на сайт... "Не удается найти DNS-адрес сервера"
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
Vesuvius, какой путь вводите?
Если верный адрес, то возможных причин несколько
  1. Вы тестируете локально. Можно добавить запись в файл hosts тем самым переадрисовувая на локальный компьютер
  2. Вы не обновили записи в ДНС или же они еще не обновились везде (там есть кэш, и иногда доходит до 24 часов, а иногда и 5 минут в зависимости как настроен ДНС)
  3. Вы ошиблись в буковке или вводите www.*** тогда как домен прописан без www
  4. После изменений вы не рестартуете nginx
Также посмотрите логы nginx-а. А именно доходят ли запросы до него ввобше
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
fantom, все делал исключительно по инструкц... не вводил.. а копировал практически все....
как обновлять записи ДНС? тут про ДНС ничево не сказано... поетому и не делал етого.. как ето сделать?
все верно вводил http://tm-inf.com/
ненашол логов(
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
нет.. придумал.... иле ево надо гдето регестрировать?
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
fantom, тоесть ево невозможно создать в системе? ево надо гдето купить.... и тогда получиться? верно я понял?
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
Vesuvius, если только для вас, то можна прописать в файле hosts, но тогда все, кроме вас или тех кто так сделает, доступ к сайту не будут иметь.
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
fantom, а допустим есть свой домен.... то по етой инструкции он заработает?
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
fantom, если домен на другом хосте... как ево прикрутить к ВДС? надо чтото делать?
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
ето все понятно.... просто думал в putty надо еще чтото писать... ладно спасибо покачто....
12 Авг 2017
ln: failed to create symbolic link `/etc/nginx/sites-enabled/tm-inf.in.ua': File exists
что не так сделал?
 
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Vesuvius, так вам система говорит «Такой файл уже есть»
 
Сообщения
317
Реакции
131
Помог
4 раз(а)
Осталось создать виртуальный хост и включить наш сайт.
В качестве дефолтного сайта nginx отвечает файл default, который находится по пути /etc/nginx/sites-available
Код:
server {
    #Слушаем 80 порт и указываем имя своего домена
    listen 80;
    listen [::]:80;
    server_name _;

    #Указываем путь, куда будут писатся логи
    access_log /var/www/logs/nginx_access.log;
    error_log /var/www/logs/nginx_error.log;

    #Указываем директорию, где будет размещен наш сайт
    root /var/www/html;
    index.html

    # какие то правила...
    location /fastdl/ {
        alias    /home/cs/server/cstrike/;
        autoindex on;

        location ~* (\.wad$|(maps|sprites|models|gfx|sound|media|overviews)/.*(bsp|mdl|spr|wav|mp3|bmp|tga|txt|res)$) {
            allow all;
        }

        deny all;
    }
}
На счет server_name не уверен, мб ип вставить
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу