Введение

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

В этом обучающем модуле мы расскажем, как установить Nginx на сервере Ubuntu 18.04. Более подробную версию этого обучающего модуля можно найти в документе Установка Nginx в Ubuntu 18.04.

Предварительные требования

nginx illustration for: Предварительные требования

Для прохождения этого обучающего модуля вам потребуется следующее:

  • Один сервер Ubuntu 18.04 и обычный пользователь без прав root с привилегиями sudo. Также вам потребуется включить базовый брандмауэр, чтобы заблокировать все порты, кроме необходимых. Вы научитесь настраивать учетную запись обычного пользователя и брандмауэр, следуя указаниям руководства Начальная настройка сервера Ubuntu 18.04.

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

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

Поскольку Nginx доступен в хранилищах Ubuntu по умолчанию, вы можете установить его с помощью системы пакетов apt.

Обновите локальный индекс пакетов:

				
					
sudo apt update

				
			

Установите Nginx:

				
					
sudo apt install nginx

				
			

Шаг 2 — Настройка брандмауэра

Если вы выполнили указания обучающего модуля по предварительной настройке сервера, вы уже активировали брандмауэр UFW. Проверьте доступные профили приложений ufw с помощью следующей команды:

				
					
sudo ufw app list

				
			
				
					
[secondary_label Output]

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

				
			

Мы активируем профиль с наибольшими ограничениями, который будет разрешать заданный трафик, а именно трафик на порту 80:

				
					
sudo ufw allow 'Nginx HTTP'

				
			

Проверьте изменения:

				
					
sudo ufw status

				
			
				
					
[secondary_label Output]

Status: active



To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere                  

Nginx HTTP                 ALLOW       Anywhere                  

OpenSSH (v6)               ALLOW       Anywhere (v6)             

Nginx HTTP (v6)            ALLOW       Anywhere (v6)

				
			

Шаг 3 – Проверка веб-сервера

Используйте команду systemd init system, чтобы проверить работу службы:

				
					
systemctl status nginx

				
			
				
					
[secondary_label Output]

● nginx.service - A high performance web server and a reverse proxy server

   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

   Active: <^>active (running)<^> since Fri 2018-04-20 16:08:19 UTC; 3 days ago

     Docs: man:nginx(8)

 Main PID: 2369 (nginx)

    Tasks: 2 (limit: 1153)

   CGroup: /system.slice/nginx.service

           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

           └─2380 nginx: worker process

				
			

Откройте страницу Nginx по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес:

				
					
http://<^>your_server_ip<^>

				
			

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

Шаг 4 — Настройка блоков сервера (рекомендуется)

При использовании веб-сервера Nginx вы можете использовать _блоки сервера_ (аналогичные виртуальным хостам в Apache) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен example.com, но вы должны заменить это имя собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью the cloud provider, пройдите наш обучающий модуль Введение в DNS hosting.

Создайте каталог для <^>example.com<^>, используя опцию -p для создания необходимых родительских каталогов:

				
					
sudo mkdir -p /var/www/&lt;^&gt;example.com&lt;^&gt;/html

				
			

Назначьте владельца каталога:

				
					
sudo chown -R $USER:$USER /var/www/&lt;^&gt;example.com&lt;^&gt;/html

				
			

Разрешения корневых каталогов веб-сервера должны быть правильными, если вы не изменяли значение umask. Тем не менее, вы можете проверить это с помощью следующей команды:

				
					
sudo chmod -R 755 /var/www/&lt;^&gt;example.com&lt;^&gt;

				
			

Создайте в качестве примера страницу index.html, используя nano или свой любимый редактор:

				
					
nano /var/www/&lt;^&gt;example.com&lt;^&gt;/html/index.html

				
			

Добавьте в страницу следующий образец кода HTML:

				
					
[label /var/www/example.com/html/index.html]

&lt;html&gt;

    &lt;head&gt;

        &lt;title&gt;Welcome to &lt;^&gt;Example.com&lt;^&gt;!&lt;/title&gt;

    &lt;/head&gt;

    &lt;body&gt;

        &lt;h1&gt;Success!  The &lt;^&gt;example.com&lt;^&gt; server block is working!&lt;/h1&gt;

    &lt;/body&gt;

&lt;/html&gt;

				
			

Сохраните файл и закройте его после завершения.

Создайте новый серверный блок в /etc/nginx/sites-available/<^>example.com<^>:

				
					
sudo nano /etc/nginx/sites-available/&lt;^&gt;example.com&lt;^&gt;

				
			

Вставьте следующий блок конфигурации, обновленный с учетом новых имен каталога и домена:

				
					
[label /etc/nginx/sites-available/example.com]

server {

        listen 80;

        listen [::]:80;



        root /var/www/&lt;^&gt;example.com&lt;^&gt;/html;

        index index.html index.htm index.nginx-debian.html;



        server_name &lt;^&gt;example.com&lt;^&gt; www.&lt;^&gt;example.com&lt;^&gt;;



        location / {

                try_files $uri $uri/ =404;

        }

}

				
			

Сохраните файл и закройте его после завершения.

Активируйте файл, создав ссылку от него в каталог sites-enabled:

				
					
sudo ln -s /etc/nginx/sites-available/&lt;^&gt;example.com&lt;^&gt; /etc/nginx/sites-enabled/

				
			

Теперь два серверных блока активированы и настроены отвечать на запросы на базе директив listen и server_name:

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

Чтобы избежать возможной проблемы с хэшированием памяти при добавлении дополнительных имен серверов, необходимо изменить одно значение в файле /etc/nginx/nginx.conf. Откройте файл:

				
					
sudo nano /etc/nginx/nginx.conf

				
			

Найдите директиву server_names_hash_bucket_size и удалите символ #, чтобы убрать режим комментариев для строки:

				
					
[label /etc/nginx/nginx.conf]

...

http {

    ...

    server_names_hash_bucket_size 64;

    ...

}

...

				
			

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

				
					
sudo nginx -t

				
			

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

				
					
sudo systemctl restart nginx

				
			

Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://<^>example.com<^>, после чего должны увидеть примерно следующее:

Заключение

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

Если вы хотите развернуть более сложный набор обслуживания приложений, ознакомьтесь с этой статьей о настройке набора LEMP в Ubuntu 18.04.