Установка и настройка Nginx на Ubuntu

Содержание

Настройка хостов Nginx в Ubuntu

Установка и настройка Nginx на Ubuntu

Всем привет! Данное руководство покажет, как выполняется настройка хостов Nginx на сервере Ubuntu 16.04.

Виртуальные хосты в Nginx также называются блоками server. Эти блоки используются для обслуживания нескольких индивидуальных доменов на одном сервере.

Требования

  • Не-root пользователь с доступом sudo
  • Предварительно установленный веб-сервер Nginx. Инструкции по установке стека LEMP в Ubuntu можно найти здесь.

Кроме того, для выполнения предложенных в руководстве примеров нужно иметь два доменных имени; в руководстве используются условные домены example.com и test.com.

Не забудьте заменить их своими доменными именами.

Если у вас нет доменных имён, которые можно использовать для тестирования настроек, укажите фиктивные домены. В руководстве есть специальный раздел, объясняющий, как протестировать сайты при помощи локальной машины.

1. Каталоги Document Root

По умолчанию в Ubuntu 16.04 включен один стандартный виртуальный хост Nginx, который обслуживает документы из каталога /var/www/html.

Для обслуживания нескольких сайтов нужно создать дополнительные каталоги. Каталог /var/www/html будет использоваться в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному из других сайтов.

Создайте структуру каталогов в /var/www для каждого отдельного сайта. Весть текущий контент нужно поместить в каталог html. Используйте следующую команду; флаг –p создаст все необходимые родительские каталоги.

sudo mkdir -p /var/www/example.com/htmlsudo mkdir -p /var/www/test.com/htmlСоздав все необходимые каталоги, передайте права на них текущему пользователю с доступом к sudo.

Примечание: В зависимости от требований сервера вам может потребоваться повторно настроить права доступа или права собственности на папки, чтобы разрешить доступ к пользователю www-data. В этом, как правило, часто нуждаются динамические сайты. Конечно, привилегии доступа полностью зависят от конфигурации сервера.

Используйте переменную окружения $USER, чтобы задать текущего пользователя. Это позволит создавать файлы в этих каталогах.

sudo chown -R $USER:$USER /var/www/example.com/htmlsudo chown -R $USER:$USER /var/www/test.com/html

Теперь права на эти каталоги установлены верно, если ранее значение umask не было изменено. Это можно проверить при помощи команды:

sudo chmod -R 755 /var/www

2. Создание страниц для сайтов

Создав необходимую структуру каталогов, можно переходить к созданию стандартных страниц сайтов, чтобы иметь возможность просмотреть добавленный контент.

Создайте страницу index.html для первого сайта.

nano /var/www/example.com/html/index.html

В этот файл вставьте следующий код; эта простая базовая страница сообщит, какой из двух сайтов открыт.

Success! The example.com server block is working!

Установка и настройка Nginx на Ubuntu

Сохраните и закройте файл.

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

cp /var/www/example.com/html/index.html /var/www/test.com/html/

Откройте этот файл в текстовом редакторе:

nano /var/www/test.com/html/index.html

Откорректируйте данные, указав информацию о втором сайте:

Success! The test.com server block is working!

Установка и настройка Nginx на Ubuntu

Сохраните и закройте файл.
Теперь стандартные страницы сайтов готовы.

3. Создание виртуальных хостов

Итак, теперь файловая структура и страницы, обслуживающие контент, готовы к работе. Приступайте к созданию блоков server для Nginx.

По умолчанию Nginx содержит один блок server по имени default, который можно использовать в качестве шаблона.

Блок server для первого сайта

Итак, скопируйте стандартный файл, чтобы создать первый блок server.

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

Откройте новый файл в текстовом редакторе:

sudo nano /etc/nginx/sites-available/example.com

Не учитывая закомментированных строк, этот файл выглядит так:

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; }}

Сначала нужно разобраться с директивами listen. Спецификация default_server может быть действительна только для одного виртуального хоста. Она указывает, какой из виртуальных хостов должен обслуживать запрос, если запрашиваемый server_name не совпадает ни с одним из существующих виртуальных хостов.

Добавьте опцию default_server в директиву listen одного из своих сайтов. Также можно оставить эту опцию в файле стандартного виртуального хоста, который будет обслуживать каталог /var/www/html, если запрашиваемый хост не может быть найден.

В данном руководстве стандартный виртуальный хост будет обслуживать несовпадающие запросы, потому директиву default_server нужно удалить из него и добавить в файл другого хоста.

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

Примечание: Чтобы убедиться, что опция default_server включена только в одном файле виртуального хоста, введите:

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

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

Далее нужно указать каталог document root, отредактировав директиву root.

server { listen 80; listen [::]:80; root /var/www/example.com/html;}

Затем нужно отредактировать server_name, указав доменное имя (в данном случае – домен первого сайта). Также можно добавить несколько алиасов (например, www.example.com). В результате получится:

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

Базовая настройка виртуального хоста завершена.

Блок server для второго сайта

Итак, базовый код блока server готов. Файл блока server можно использовать в качестве шаблона для блока второго сайта. Скопируйте этот файл:

sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com

Откройте новый файл с привилегиями root:

sudo nano /etc/nginx/sites-available/test.com

Обратите внимание на директиву listen. Если опция default_server была включена в предыдущий файл, удалите её из этого файла. Также нужно откорректировать значение директивы root (укажите document root второго сайта) и server_name (укажите доменное имя и все алиасы).

В результате файл будет выглядеть так:

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

Сохраните и закройте файл.

4. Включение виртуальных хостов

Теперь виртуальные хосты готовы, но их нужно активировать.

Для этого нужно создать символьные ссылки из этих файлов в каталог sites-enabled, который читается веб-сервером Nginx во время запуска.

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

Теперь эти файлы в каталоге sites-enabled. На данный момент у вас есть три виртуальных блока, которые смогут отвечать на запросы согласно директивам listen и server_name.

  • example.com: файл для сайта example.com и его алиасов.
  • test.com: файл для сайта test.com и его алиасов.
  • default: стандартный файл, который будет отвечать на запросы, не соответствующие ни первому, ни второму сайту.

Чтобы избежать потенциальных проблем с памятью, которые могут возникнуть из-за дополнительных имён сервера, отредактируйте файл /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf

Найдите директиву server_names_hash_bucket_size и раскомментируйте её:

http { . . . server_names_hash_bucket_size 64; . . .}

Сохраните и закройте файл.

Проверьте синтаксис на наличие ошибок:

sudo nginx -t

Если ошибок нет, перезапустите Nginx, чтобы обновить настройки:

sudo systemctl restart nginx

Теперь Nginx обслуживает два домена.

5. Настройка локальных хостов (опционально)

Если вместо настоящих доменных имён вы использовали фиктивные имена, вы можете испытать новые виртуальные хосты, не подключаясь при этом к доменному имени. Для этого нужно настроить на компьютере локальные хосты.

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

Примечание: прежде чем приступить к выполнению данного раздела, убедитесь, что вы находитесь на компьютере, а не на сервере. Для выполнения данного раздела нужно иметь root-права и состоять в административной группе, чтобы иметь возможность редактировать системные файлы.

В системах Mac или Linux войдите как root-пользователь (su) и откройте файл hosts:

sudo nano /etc/hosts

При использовании Windows обратитесь к сайту Microsoft.

На данном этапе понадобится внешний IP-адрес и домены, которые нужно направить на сервер. Допустим, внешний IP-адрес сервера 111.111.111.111; в таком случае строки будут выглядеть так:

127.0.0.1 localhost. . .111.111.111.111 example.com www.example.com111.111.111.111 test.com www.test.com

Это будет перехватывать запросы к example.com и test.com и передавать их на сервер.

Сохраните и закройте файл.

6. Тестирование

Теперь нужно протестировать работу виртуальных хостов. Для этого посетите домены в браузере:

http://example.com

На экране появится сообщение:

Success! The example.com server block is working!

Посетите второй домен:

http://test.com

На экране должно появиться сообщение:

Success! The test.com server block is working!

Если веб-сервер ответил на запросы, значит, всё работает должным образом и настройка хостов в nginx завершена.

Если файл hosts на локальном компьютере был отредактирован, на этом этапе нужно удалить добавленные в него строки.

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

464

Источник: https://andy-blog.ru/nastrojka-hostov-nginx-v-ubuntu

Установка веб-сервера Nginx на Ubuntu Server 18.04

Установка и настройка Nginx на Ubuntu

В этой статье мы пошагово рассмотрим установку веб-сервера Nginx на Ubuntu Server 18.04. Научимся управлять его процессами.

Настроим файрвол UFW для Nginx, проверим работу веб-сервера, разберемся с основными директориямилогами и посмотрим часто используемые команды.

Шаг 1. – Подготовка

На этапе подготовки мы убеждаемся что у нас есть всё необходимое для выполнения дальнейшей инструкции:

Посмотрим свой IP-адрес, командой ifconfig.(Рис.1)

ifconfigРис.1 – Командой ifconfig узнаём IP-адрес нашего сервера.

Адрес моего сервера – 192.168.3.9, в этой статье я буду вводить его в браузере на другом ПК, для проверки работоспособности Nginx. Вы должны будете ввести свой IP-адрес.

Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере -“localhost” или IP-адрес – 127.0.0.1

Всё! На этом подготовка завершена.

Шаг 2. – Установка Nginx

Первым делом обновляем список пакетов репозитория.

sudo apt update

Nginx доступен в стандартном репозитории. Приступаем к установке.(Рис.2)

sudo apt install nginxРис.2 – Устанавливаем веб-сервер Nginx на Ubuntu 18.04.

После установки сразу же посмотрим статус веб-сервера.(Рис.3)

sudo service nginx statusРис.3 – Смотрим статус веб-сервера Nginx.

Как видим Nginxпосле установки сразу же сам запустился. [Об этом свидетельствует строчка – “Active: active (running)”, также отсутствуют серьёзные ошибки.]

Nginx добавлен в автозагрузку. [Это мы понимаем по слову “enabled;” В строке “Loaded: loaded (/lib/systemd/system/nginx.service; enabled;“.]

Посмотреть версию установленного Nginx можно с помощью команды nginx -v.(Рис.4)

nginx -v

Точная версия: nginx/1.14.0.

Рис. 4 – Смотрим версию веб-сервера Nginx.

Если у вас Nginx не запустился, запустите его командой:

sudo service nginx start

Добавить Nginx в автозагрузку, можно командой:

sudo systemctl enable nginx

Если вдруг он вам не нужен в автозагрузке, то удалить Nginx из автозагрузки можно командой:

sudo systemctl disable nginx

ПерезапуститьNginx, без потери соединения, для того чтобы применились изменения сделанные в конфигурационных файлах.

sudo service nginx reload

Шаг 3. – Настройка файрвола UFW

Для тех кто файрвол не включил и не собирается включать – Переходите к Шаг 4. – Проверка Nginx

Напомню! файрвол UFW  мы включили в этой статье – Первоначальная настройка Ubuntu Server 18.04

Посмотрим профили приложений в файрволе UFW.(Рис.5)

sudo ufw app listРис.5 – Просматриваем профили приложений UFW.

Видим три профиля Nginx:

  • Nginx Full – открывает два порта 80 http [ нешифрованный веб-трафик ] и 443https [ TLS / SSL – зашифрованный веб-трафик ]
  • Nginx HTTP – открывает стандартный 80 порт – http нешифрованный веб-трафик ]
  • Nginx HTTPS – открывает только 443 порт – https [ TLS / SSL – зашифрованный веб-трафик ]

Для того чтобы применить какой-либо профиль можно воспользоваться командой – sudo ufw allow 'Имя_профиля'

Мы применим первый профиль – Nginx HTTP.(Рис.6)

sudo ufw allow 'Nginx HTTP'Рис.6 – Применяем профиль Nginx в файволе UFW.

Правило применилось! 

Шаг 4. – Проверка Nginx

На этапе Шаг 1. – Подготовка мы выяснили IP-адрес сервера, Я с другого компьютера, который находится в той же локальной сети, что и сервер, ввожу его в браузере.(Рис.7)

Для тех кто в танке… Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере – localhost или IP-адрес – 127.0.0.1 © Шаг 1. – Подготовка

Если вы тоже увидели страницу “Welcome to nginx!“, значит вы всё сделали правильно! Веб-сервер работает! 

Рис.7 – Вводим IP-адрес сервера в браузере. Страница “Welcome to nginx!”.

Каталоги и файлы конфигураций Nginx

/etc/nginx/ – Главный каталог веб-сервера Nginx.

  • /etc/nginx/nginx.conf Главный конфигурационный файл Nginx.

/var/www/ – Каталог хранит папки сайтов.

Изначально в нём содержится папка html, в которой лежит файл index.html [index.html – стартовая страница Nginx – “Welcome to nginx!“, которую мы увидели на Шаг 4. – Проверка Nginx]

Для примера покажем, как может выглядеть содержимое каталога “/var/www/” у более опытных пользователей:

  • /var/www/
    • /html
    • /itdeer.ru
    • /yandex.ru
      • /search.yandex.ru
      • /photo.yandex.ru

Хосты:

  • /etc/nginx/sites-available/ – В директории хранятся файлы доступных виртуальных хостов.[Изначально в ней хранится файл “default” – Виртуальный хост по умолчанию.]
  • /etc/nginx/sites-enabled/ – В директории хранятся активированные виртуальные хосты.

Nginx не использует файлы виртуальных хостов[sites-available], если они не активированы в директории “sites-enabled“.

Активация происходит путем создания символической ссылки в каталоге “sites-enabled“, при помощи команды [пример для виртуального хоста с именем “itdeer.

ru]:

sudo ln -s /etc/nginx/sites-available/itdeer.ru /etc/nginx/sites-enabled/

Логи веб-сервера Nginx

Логи веб-сервера Nginx хранятся в каталоге /var/log/nginx/.(Рис.8)

Рис.8 – Просмотр папки с логами /var/log/nginx/.

Приведены команды для чтения логов с помощью “tail“, “tail -10” – выводит последние 10 строк лога, можете подобрать цифру удобную вам.

/var/log/nginx/access.log – журнал всех запросов к серверу Nginx.

sudo tail -10 /var/log/nginx/access.log

/var/log/nginx/error.log – журнал всех ошибок Nginx.

sudo tail -10 /var/log/nginx/error.log

Часто используемые команды

Запустить Nginx:

sudo service nginx start

Остановить Nginx:

sudo service nginx stop

Статус Nginx:

sudo service nginx status

Добавить Nginx в автозагрузку:

sudo systemctl enable nginx

Удалить Nginx из автозагрузки:

sudo systemctl disable nginx

ПерезапуститьNginx, без потери соединения, для того чтобы применились изменения сделанные в конфигурационных файлах.

sudo service nginx reload

Проверка конфигурации Nginx на ошибки [В ответ вы получите “сообщение об ошибке” или “nginx: the configuration file /etc/nginx/nginx.

conf syntax is ok и nginx: configuration file /etc/nginx/nginx.conf test is successful” – отсутствие ошибок и синтаксисе файла  /etc/nginx/nginx.

conf и успешное выполнение конфигурации /etc/nginx/nginx.conf]:

sudo nginx -t

Версия Nginx:

nginx -v

Читаем журнал всех запросов к Nginx – access.log

sudo tail -10 /var/log/nginx/access.log

Читаем  журнал всех ошибок Nginx – error.log

sudo tail -10 /var/log/nginx/error.log

У меня всё!

Была ли вам полезна статья? Есть возможность поддержать проект.

Источник: https://itdeer.ru/nginx-na-ubuntu-server-18-04/

Установка Nginx Ubuntu 16.04

Установка и настройка Nginx на Ubuntu

На данный момент самую большую популярность набрали два веб-сервера. Это Apache и Ngnix. У каждого из них есть свои плюсы и минусы.

Apache был разработан еще в 1995 году и при его разработке учитывались не все возможные потребности пользователей, он потребляет много памяти и ресурсов системы, зато он прост в настройке.

Nginx был разработан чуть позже в 2002 году уже учитывая ошибки Apache и ориентируясь на максимальную производительность.

Мы не будем подробно вникать в плюсы и минусы этих обоих веб-серверов. У каждого из них своя область применения.  В этой инструкции будет рассмотрена установка Nginx Ubuntu 16.04. Хотя я буду говорить об Ubuntu 16.04, все действия подойдут и для других дистрибутивов. Настройка Nginx везде одинакова, только команда установки отличается.

Установка компонентов

Первым делом нужно установить сам веб-сервер в систему. Программа есть в официальных репозиториях, но ее версия уже немного устарела, поэтому если хотите самую новую версию, нужно добавить PPA:

sudo apt-add-repository ppa:nginx/stable

Сейчас в официальных репозиториях доступна версия 1.10.0, а в стабильной PPA уже доступна 1.10.1. Если для вас версия не нужна можно обойтись и без PPA. Дальше обновите списки пакетов из репозиториев:

sudo apt update

И устанавливаем ngnix:

sudo apt install nginx

После того как установка сервера Nginx будет завершена добавим программу в автозагрузку, чтобы она запускалась автоматически:

sudo systemctl enable nginx

Если вы уже сейчас откроете браузер, то увидите работающий nginx, но нам предстоит его еще настроить.

Настройка Nginx Ubuntu

Настройка Nginx Ubuntu намного сложнее чем Apache. Здесь мы не будем рассматривать все опции и возможности программы, а поговорим только об основном. Есть различные конфигурации, в которых Nginx используется в качестве прокси сервера, а основной сервер Apache, но нас это интересовать не будет. Нам нужна установка Nginx как самостоятельного веб-сервера.

Настройки Nginx сильно отличаются здесь есть только один основной файл конфигурации и файлы для виртуальных хостов. Настройка из каждой директории, как в Apache не поддерживается.

  • /etc/nginx/nginx.conf – главный файл конфигурации
  • /etc/nginx/sites-available/* – файлы конфигурации для виртуальных хостов, проще говоря для каждого сайта.
  • /etc/nginx/sites-enabled/* – файлы конфигурации активированных сайтов.

На самом деле файлы конфигурации для виртуальных хостов читаются только из директории sites-enabled, но здесь содержаться ссылки на sites-available. Такая система была придумана, чтобы дать возможность отключать на время те или иные сайты, не стирая их конфигурацию.

Все остальные файлы содержат только объявления переменных и стандартные настройки, которые изменять не нужно. Что же касается nginx.conf, то в него включаются все файлы из sites-enables, а поэтому они могут содержать все точно такие же инструкции.

А теперь давайте рассмотрим главный файл конфигурации:

sudo vi /etc/nginx/nginx.conf

Как видите файл разделен на секции. Общая структура такова:

глобальные опцииevents {}http{server {location{}}server {}}

mail {}

  • глобальные опции отвечают за работу всей программы.
  • events – эта секция содержит настройки для работы с сетью.
  • http – содержит настройки веб-сервера. Должна содержать секцию servier для тонкой настройки каждого сайта.
  • server – в этой секции содержится настройка каждого размещенного на веб-сервере сайта.
  • location – секция location может находиться только внутри секции server и содержит настройки только для определенного запроса.
  • mail – содержит настройки почтового прокси.

Перед тем как перейти к опциям, нужно сказать еще пару слов о синтаксисе строки в конфигурационном файле. Он выглядит вот так:

параметр значение дополнительное_значение…;

Строка должна обязательно заканчиваться “;”, а все открытые скобки { должны быть закрыты.

Теперь, когда вы немного изучили глобальную структуру, можно переходить к рассмотрению самих параметров. Глобальных опций не так уж много:

  • user – пользователь, от имени которого будет работать программа.
  • worker_processes – устанавливает сколько процессов нужно запускать для параллелизации работы программы, нужно запускать не больше процессов, чем у вас есть ядер. Можно установить параметр auto и тогда программа определит это число сама.
  • pid = файл pid программы.
  • worker_rlimit_nofile – указывает максимальное количество файлов, которые может открыть программа. Рассчитывается как worker_processes * worker_connections* 2.

С глобальными опциями закончили, их было не так много и они не такие интереснее. Куда интереснее в плане оптимизации опции с секции events:

  • worker_connections – количество соединений, которые программа может обрабатывать одновременно на одном процессе. Если умножить worker_process на этот параметр, то мы получим максимальное количество пользователей, которые могут подключиться к серверу одновременно. Рекомендуется устанавливать значение от 1024 до 4048.
  • multi_accept – разрешить принимать много подключений одновременно, установите параметр on или off.
  • use – способ работы с сетевым стеком. По умолчанию используется poll, но для Linux эффективнее использовать epoll.

Дальше переходим самой главной секции – http. Здесь опций намного больше:

  • sendfile – использовать метод отправки данных sendfile. Значение on.
  • tcp_nodelay, tcp_nopush – отправлять заголовки и начало файла одним пакетом. Значение on.
  • keepalive_timeout – таймаут ожидания, перед тем как keepalive соединение будет разорвано, по умолчанию 65, но можно уменьшить до 10 секунд.
  • keepalive_requests – максимальное количество keepalive соединений от одного клиента, рекомендовано 100.
  • reset_timedout_connection – разрывать соединения после таймаута. Значение on.
  • open_file_cache – кэшировать информацию об открытых файлах. Строчка настройки выглядит вот так: open_file_cache max=200000 inactive=20s; max – максимальное количество файлов в кэше, время кэширования.
  • open_file_cache_valid – указывает по истечении какого времени нужно удалить информацию из кэша. Например: open_file_cache_valid 30s;
  • open_file_cache_min_uses – кэшировать информацию о файлах, которые были открыты как минимум указанное количество раз.
  • open_file_cache_errors – кэшировать информацию об отсутствующих файлах, значение on.

Основные параметры рассмотрели. Эти настройки помогут вам получить большую производительность от nginx. Секцию server и location мы рассмотрим в настройке виртуальных хостов.

Настройка сжатия Gzip

Сжатие контента необходимо, чтобы уменьшить размер загружаемых браузером данных. Это ускоряет загрузку сайта, но добавляет дополнительную нагрузку на процессор сервера. Чтобы включить сжатие в секции http нужно добавить параметр:

gzip on

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

  • gzip_min_length – минимальная длина страницы в байтах, при которой нужно использовать сжатие, например, 1000 (1 кб)
  • gzip_proxied – нужно ли сжимать проксированые запросы, any говорит, что нужно сжимать все.
  • gzip_types – типы файлов, которые нужно сжимать, например: text/plain application/xml application/x-javascript text/javascript text/css text/json;
  • gzip_disable “msie6” – в IE 6 сжатие не поддерживается, поэтому отключаем.
  • gzip_comp_level – уровень сжатия, доступны варианты от 1 до 10. 1 – минимальное, 10 – максимальное сжатие.

Настройка виртуальных хостов

Как вы знаете, на сервере может размещаться несколько сайтов. Все запросы приходят на ip сервера, а nginx уже определяет на основе домена какой контент нужно выдать.

Для того чтобы nginx знал что к какому домену относится нужно настроить виртуальные хосты. Каждый хост принято размещать в отдельном файле.

Настройка хоста находится в секции server, но поскольку все файлы из sites-enabled импортируются в секцию http, то логика структуры конфигурационного файла не нарушается.

Рассмотрим пример настройки:

vi /etc/nginx/sites-enabled/losst.ru.conf

  • listen 80 – указывает, что нужно ожидать подключения на порту 80, может также содержать опцию default-server, которая означает, что этот домен будет открывается если домен не был задан в запросе.
  • root /var/www/html – директория, в которой находятся файлы сайта.
  • index index.html – страница, которая будет открываться по умолчанию.
  • server_name – доменное имя сайта.
  • access_log – файл для записи лога запросов к серверу, может использоваться как глобально в секции http, так и для определенного типа файлов в location.
  • error_log – лог ошибок веб-сервера, может принимать дополнительный параметр, указывающий подробность лога. warn – максимум, crit – только критические ошибки.

Это все основные настройки виртуального хоста, после них он уже будет работать. Но тут есть еще секция location, которая позволяет настроить поведение сервера для определенных директорий и файлов. Синтаксис location такой:

location адрес {}

В качестве адреса может использоваться как прямой запрос относительно корня сервера, так и регулярные выражения. Для использования регулярных выражений перед ним ставится символ “~”. Примеры рассмотрим ниже, а пока рассмотрим возможные директивы:

  • allow – разрешить доступ к местоположению для пользователей, all – всех, также можно указать ip или подсеть.
  • deny – запретить доступ к местоположению, all – для всех.
  • try-files – пытается открыть файлы в определенном порядке, открывает первый обнаруженный файл. Например, такая конструкция: $uri $uri/index.html $uri.html =404; сначала пытается открыть $uri, затем index.html, если не найден $uri.html, и аж потом, если ни одного из предложных файлов не существует, выдает ошибку 404.
  • expires – задает время кэширования браузером отданного элемента, например, 1d – один день, 2h – два часа, 30s – 30 секунд.

Кроме этих главных директив, здесь могут использоваться и другие. Чтобы получить больше подробностей, смотрите официальную документацию. Рассмотрим пару примеров:

Не выполнять логирование для favicon:

location = /favicon.ico {log_not_found off;access_log off;

}

Запретить доступ к файлам, начинающимся с точки:

location ~ /\. {deny all;

}

Кэшировать обычные файлы на 90 дней:

location ~* .+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {access_log off; log_not_found off; expires 90d;

}

После того, как установка и настройка nginx будет завершена проверяем конфигурацию на ошибки:

nginx -t

Затем перезагружаем сервер:

sudo service nginx reload

sudo service nginx restart

Если изменялись незначительные параметры можно использовать reload, тогда будет просто обновлена конфигурация без перезагрузки, если же изменяли глобальные опции, нужно перезагрузить программу полностью с помощью restart.

Просмотр статистики

Просмотр статистики работы веб-сервера очень важен. Установка nginx, должна содержать настройку возможности получения статистики. Для того чтобы это сделать добавьте такие строки к вашему хосту в секцию server:

location /basic-staus {stats_stub;allow 127.0.0.1deny all;

}

Статистика будет доступна только с локального ip:

wget localhost/basic-status -O –

Выводы

Установка Nginx Ubuntu 16.04 завершена и теперь вы немного представляете как его настроить. Конечно, есть еще много вещей, которые мы не упомянули в статье, например, настройка обработки динамического контента php или настройка nginx Ubuntu в качестве прокси-сервера для apache. Возможно, это будет рассмотрено в следующих статях.

(11 4,91 из 5)
Загрузка…

Источник: https://losst.ru/ustanovka-nginx-ubuntu-16-04

Как установить nginx, MySQL, PHP (LEMP) в Ubuntu

Установка и настройка Nginx на Ubuntu

В этом посте мы разберем процесс установки сервера на основе Nginx на Ubuntu

Данное руководство наиболее полно отражает процесс настройки LEMP сервера на базе хостинга от DigitalOcean, счастливым клиентом которого я недавно стал и вам советую.

Вводная

LEMP — аббревиатура, обозначающая комплекс программ для развертывания полного серверного окружения. Название формируется из входящих компонентов:

  • Linux — операционная система Linux;
  • Nginx(читается EnginX) — веб-сервер;
  • MariaDB / MySQL — СУБД;
  • PHP — язык программирования, используемый для создания веб-приложений (помимо PHP могут подразумеваться другие языки, такие как Perl и Python).

Данная связка серверного ПО пока мало распространена у большинства традиционных хостингов, но с каждым днем становится все более популярной.

Итак, предполагается что в качестве Linux-дистрибутива у нас установлен Ubuntu 14.04, приступаем к работе:

Шаг первый — установка веб-сервера Nginx

Для установки всего комплекса ПО мы будем использовать репозитории самого Ubuntu и стандартный менеджер пакетов apt

Откроем консоль в Ubuntu и установим Nginx, предварительно обновив источники пакетов:

sudo apt-get update
sudo apt-get install nginx

Теперь сервер Nginx установлен.

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

Если это ваш локальный компьютер то достаточно набрать http://localhost

Вы должны увидеть стартовую страницу Nginx:

Старт и остановка сервера осуществляется командами:

sudo service nginx start
sudo service nginx stop

Так как у меня первоначально стоял Apache2, пришлось сначала остановить его и затем запустить Nginx

sudo service apache2 stop
sudo service nginx start

Шаг второй — устанавливаем базу данных MySQL

Теперь, когда у нас есть веб-сервер, нам необходимо установить MySQL — базу данных, где будет храниться информация для нашего сайта.

Сделать это достаточно просто, открываем консоль и вбиваем:

sudo apt-get install mysql-server

В процессе установки вам будет предложено ввести пароль администратора MySQL, который вам стоит запомнить или записать.

Все, MySQL установлен, но еще не настроен до конца.Во-первых, необходимо создать первичную структуру для хранения данных самой MySQL. Мы можем это сделать командой:

sudo mysql_install_dbДалее нам необходимо запустить сценарий безопасности, который изменит некоторые настройки идущие по умолчанию:
sudo mysql_secure_installation

Вам нужно будет ввести пароль администратора MySQL, который Вы выбрали во время установки.

Далее, вам будет предложено изменить его. Если в этом нет необходимости, введите «N» и нажмите «ENTER». После этого вам будет предложено удалить некоторых тестовых пользователей и базы данных. Вы должны просто нажимать «ENTER» при появлении вопросов, чтобы удалить опасные настройки по умолчанию.

После того, как сценарий завершиться, MySQL готов к использованию.

Шаг третий — установка PHP

После установки сервера Nginx и MySQL нам необходимо связующее звено — серверный язык/ который будет отрабатывать динамические запросы.Поскольку Nginx не содержит встроенной обработки PHP как и некоторые другие веб-серверы, нам нужно установить php5-fpm (Менеджер процессов FastCGI). Благодаря ему Nginx сможет обрабатывать PHP запросы.

Помимо самого модуля, нам потребуется вспомогательный пакет, который позволит PHP общаться с нашей базы данных.

Давайте произведем установку, набрав в консоли:

sudo apt-get install php5-fpm php5-mysql

Повышаем безопасность PHP-FPM

Для повышения безопасности работы с PHP нам надо произвести донастройку.Отроем на редактирование файл:

sudo nano /etc/php5/fpm/php.ini

после чего, найдем строчку содержащую «cgi.fix_pathinfo», которая по-умолчанию выглядит так:

;cgi.fix_pathinfo = 1

раскомментируем ее и изменим значение, должно получиться так:

cgi.fix_pathinfo = 0

Сохраните измененный файл.Это призвано устранить опасность неправильно трактования (и возникающей уязвимости) запросов вида /image.gif/foo.php

Шаг четвертый — настройка работы NGINX с PHP

Теперь у нас есть все составляющие сервера. Нам необходимо лишь связать NGINX и PHP для того чтоб он мог отрабатывать динамический контент.Сделаем настройку так называемых серверных блоков(то же самое что виртуальные хосты у Apache)

sudo nano /etc/nginx/sites-available/default

Без комментов этот блок смотрится примерно так:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

server_name localhost;

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

В него нужно внести небольшие изменения.

Во-первых, нужно внести index.php как первое значение директивы index, чтобы индексные файлы PHP обслуживались при запросе каталога.

На месте директивы server_name, надо указать доменное имя или общедоступный IP сервера.

Конфигурационный файл включает в себя несколько закомментированных строк, которые определяют процедуры обработки ошибок. Их нужно раскомментировать.

Также нужно будет раскомментировать часть другого раздела и добавить директиву try_files, чтобы убедиться, что Nginx не передает подозрительные запросы на процессор PHP.

Должно получиться как то так:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name server_domain_name_or_IP;

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

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info (.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

Вот и все — мы настроили сервер на основе NGINX для нашей Ubuntu 14.04.

Теперь перезагрузите его, чтобы все наши изменения вступили в силу:

sudo service nginx restart

Источник: https://newwebmaster.ru/blog/nginx-mysql-php-lemp-ubuntu/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.