Создание, продвижение сайтов
40-33-54

Начало работы с NGINX

12 декабря 2019

Цель данной заметки -  обобщение полученной из многочисленных источников информации о том, как начать работу с nginx.

Устанавливаем NIGINX в убунте. Поочерёдно выполняем следующие команды в терминале:

sudo apt-get update
sudo apt-get install nginx

После этих простых действий на вашем ip или основном домене появится приветствие от nginx - ваш сервер получил самую быструю и современную версию веб-сервера.

По умолчанию у нас есть всего один хост (сайт), и он лежит в папке: /usr/share/nginx/html. Если у вас будет всего один сайт на сервере, то на этом можно закончить настройку виртуального сервера. Далее вам просто необходимо будет залить все необходимые файлы в данную директорию.

Привязка доменов к директориям

Тем, кто не готов ограничиться одним только доменом и хочет захостить на своём сервере несколько сайтов, необходимо следующее.

Давайте для начала создадим папки для будущих сайтов, например для site1.com и site2.com

В большинстве систем принято размещать все сайты в директории /var/www/ - вы можете следовать этой логике. Разница с моим примером будет только в вписании этого пути в конфиги.

Я же, периодически работая с node.js в терминале моего мака, привык, что проекты хранятся в домашней директории моего юзера в папке projects, в нашем случае ради семантичности - буду использовать директорию www. Плюсом такого подхода будет то, что создав в системе юзера и заходя под ним на ftp, вы по умолчанию попадаете в его домашнюю директорию, где нас и будет поджидать та самая папка www со всеми нашими сайтами.

Создаём папки сайтов:

sudo mkdir -p /home/user/www/site1.com/public
sudo mkdir -p /home/user/www/site2.com/public

Флаг -р ставим для того, что бы создавалась иерархия каталогов по указанному пути.

Теперь давайте зададим правильные права на корневой каталог следующей командой:

sudo chmod -R 755 /home/user/www

Теперь давайте расскажем nginx'у, что вы создали новый хост, и привяжем к данному хосту домен. Сделаем мы это на примере стандартного хоста: для начала просто скопируем его, и в имя вставим ваш домен:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/site1.com

где user это имя вашего юзера; у меня это ubuntu, созданный амазоном по умолчанию.

Далее внесём правки в этот документ с указанием расположения папки для этого домена.

sudo vi /etc/nginx/sites-available/site1.com

Очищенный от комментов файл будет выглядеть следующим образом:

server {
   listen 80;
   listen [::]:80;

   root /home/user/www/example.com/public;
   index index.html index.htm;

   server_name site1.com www.site1.com;

   location / {
       try_files $uri $uri/ =404;
   }
}

Обратите внимание: здесь не подключен ни php, ни другие языки разработки. Вы можете задать их как глобально для всех сайтов, так и вписывать здесь же для каждого сайта отдельно. Таким образом, один сайт может спокойно работать на новой версии php7, а другой - на своём php5 или вообще на node.js

Конечную директорию я тоже не просто так изменил со стандартного html на public. Таким образом я заложил возможность в дальнейшем оперативно добавить Laravel в корневую директорию сайта и быстро приступить к разработке без дополнительной настройки окружения.

Теперь создадим симлинк на новый виртуальный хост:

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/

Теперь давайте изменим лимит на длину доменов, если у вас подразумеваются длинные домены или домены третьего уровня; отредактируем файл:

sudo nano /etc/nginx/nginx.conf

Необходимо найти и раскомментировать следующую строку (если по умолчанию там 32, замените на 64):

server_names_hash_bucket_size: 64;

Всё! Второй сайт делаем по точной аналогии. Затем перезагружаем nginx.

sudo service nginx restart

Направить ip сервера на папку

Если вы не хотите, чтобы при вводе IP адреса открывался какой-либо из сайтов, вы можете отправить IP на заглушку.

root /var/www/example.com/public;

Склейка доменов в NGINX

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

if ($host ~* ^www\.(.+)$) {
    set $newhost $1;
    rewrite ^ http://$newhost$request_uri permanent;
}

Присвоить права текущему пользователю на каталог

Иногда некий системный каталог нужно дать на запись вашему пользователю, проще говоря, передать ему в собственность. Выполняется простой командой:

sudo chown -R $USER:$USER /var/www/

Статьи

Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.