Повний покроковий посібник із встановлення та налаштування веб-сервера Nginx в системі Ubuntu 20.04
Nginx — це популярний веб-сервер із відкритим вихідним кодом, доступний на кількох платформах. Програмне забезпечення розроблено Ігор Сисоєв як рішення проблеми C10K і вперше випущена в 2004 році. Проблема C10K — це проблема одночасного обслуговування десяти тисяч клієнтів, що було досить непросто на початку 2000-х.
У цьому підручнику ми розглянемо, як встановити та налаштувати Nginx на Ubuntu 20.04 LTS.
Передумови
Система з установленою Ubuntu 20.04 і a sudo
користувач. Крім того, вам не потрібно мати інший веб-сервер, наприклад Apache, запущений на порту 80 або 443.
Встановлення Nginx
Nginx доступний у репозиторії Ubuntu 20.04 і прих
Для його встановлення можна використовувати менеджер пакетів. Отже, щоб встановити Nginx, відкрийте термінал за допомогою ctrl+alt+t
і запустити:
sudo apt update && sudo apt install nginx
Встановлення незабаром завершиться, і демон Nginx автоматично запуститься у фоновому режимі. Отже, щоб перевірити стан Nginx, запустіть:
sudo systemctl status nginx
Після виконання наведеної вище команди ви повинні отримати статус Nginx як активний (запущений)
зеленого кольору, як показано нижче.
Налаштування брандмауера Ubuntu (UFW)
За замовчуванням вихідні порти HTTP (80) і HTTPS (443) закриті в Ubuntu 20.04. Крім того, демон брандмауера за замовчуванням ufw
вимкнено, оскільки всі порти закриті.
Таким чином, щоб отримати доступ до сервера Nginx з інших систем, вам потрібно ввімкнути ufw
і налаштуйте його правильно, щоб дозволити трафік через порт 80
і 443
. Перш ніж увімкнути ufw
, знайте, що якщо ви налаштовуєте Nginx на віддаленому сервері, спочатку оновіть файл ufw
правила дозволяти ssh
за допомогою:
sudo ufw дозволити ssh
Наведена вище команда дозволяє ssh
доступ до віддаленого сервера без дозволу ssh
ви будете заблоковані на віддаленому сервері.
Після включення ssh
доступ, ви можете увімкнути ufw
демон брандмауера, запустивши:
sudo ufw увімкнути
Тепер вам потрібно змінити правила брандмауера, щоб дозволити порти HTTP і HTTPS, щоб Nginx міг обслуговувати веб-трафік. Щоб змінити правила, запустіть:
sudo ufw дозволити "Nginx Full"
Nginx повний
дозволяє використовувати порти HTTP і HTTPS для вхідного та вихідного трафіку з усіх IP-адрес.
Після цього перевірте, чи правильно додано правила ufw
брандмауер, виконавши команду:
статус sudo ufw
Наведена вище команда виведе правила, до яких ми додали ufw
демон брандмауера.
Підключення до сервера Nginx
Тепер, коли ми встановили Nginx і налаштували ufw
щоб дозволити вхідний веб-трафік HTTP і HTTPS, ви повинні мати можливість отримати доступ до сервера Nginx за допомогою IP-адреси сервера.
Якщо ви не знаєте IP-адресу сервера, скористайтеся командою нижче, щоб легко отримати її.
ip addr показати eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Отримавши IP-адресу, вставте її у свій браузер і натисніть Enter.
//IP-адрес вашого сервера
Якщо все було налаштовано правильно, ви зможете побачити веб-сторінку «Ласкаво просимо до nginx!».
Файли та каталоги Nginx
Тепер, коли на вашому сервері встановлено та працює Nginx. Давайте подивимося на деякі з важливих файлів і каталогів Nginx, які вам доведеться використовувати для налаштування свого веб-сайту/веб-програми.
Вміст веб-сервера
Ви можете налаштувати будь-яке розташування, яке ви хочете бути вашим кореневим каталогом для вашого серверного блоку. HTML за замовчуванням безпосередньо в Nginx /var/www/html
, тут знаходиться сторінка «вітання», на яку ми заходили раніше.
Інші розташування, які зазвичай використовуються як кореневий каталог для доменів, включають:
/додому//
/var/www/html/
/опт/
Файли конфігурації Nginx
Всі файли конфігурації Nginx знаходяться в /etc/nginx
каталог. Давайте розглянемо деякі з важливих файлів, які нам потрібні для налаштування основного домену.
/etc/nginx/nginx.conf
: Цей файл містить всю конфігурацію, необхідну для запуску Nginx./etc/nginx/sites-available/
: Цей каталог має всю конфігурацію серверного блоку доменів, але на даний момент він не ввімкнено/розгорнуто і, таким чином, недоступний клієнтам./etc/nginx/sites-enabled/
: У цьому каталозі містяться наразі активні/увімкнені домени, доступні клієнтам. Щоб увімкнути домен, нам потрібно зв’язати файл конфігурації домену зсайти-доступні
доз підтримкою сайтів
каталог./etc/nginx/snippets
/: У цьому каталозі ми можемо зберігати потенційно повторно використані сегменти конфігурації. Це економить багато часу у виробничому середовищі завдяки тому, що може зробити сегменти/блоки конфігурації повторно використаними.
Журнали сервера
Nginx реєструє події/діяльності та зберігає їх у файлах журналів у файлі /var/log/nginx
каталог. Nginx реєструє дії в цих файлах:
/var/log/nginx/access.log
: Цей файл реєструє клієнтів, які отримали доступ до сервера Nginx. Деталі включають IP-адресу клієнта, час і дату, браузер, який використовується для доступу до сервера, і ОС./var/log/nginx/error.log
: Цей файл реєструє помилки, які зустрічаються сервером Nginx під час роботи.
Отже, у цьому розділі ми коротко розглянули деякі важливі файли та каталоги Nginx, яких достатньо для початку.
Налаштування серверних блоків
Тепер, коли ми маємо базові знання про файли та сервер Nginx, ми готові налаштувати власний блок сервера. Блоки сервера подібні до віртуальних хостів Apache.
Ми розглянемо, як створити блок сервера, і продемонструємо, що ми будемо використовувати example.com
як домен у процесі створення.
💡 Замінити example.com
з вашим доменним іменем.
Перш ніж ми почнемо налаштовувати блоки сервера, нам потрібно створити каталог, який буде використовуватися як кореневий каталог для вмісту веб-сайту. Давайте творити /var/www/example.com/html
каталог для використання домену mkdir
команда.
sudo mkdir -p /var/www/example.com/html
The -стр
Параметр створить усі необхідні батьківські каталоги. Тобто створить example.com
батьківський каталог до html
якщо його не існує.
Змініть власника каталогу за допомогою $USER
змінна середовища:
sudo chown -R $USER:$USER /var/www/example.com/html
Далі створіть просту index.html
файл, до якого буде доступно під час відвідування домену, який налаштовується. Це лише для пояснення.
nano /var/www/example.com/html/index.html
Вставте наступний вміст у файл, який ми щойно створили на сервері.
Ласкаво просимо на example.com! Йо! example.com доступний!
Натисніть ctrl+o
записати та зберегти index.html
файл, а потім натисніть ctrl+x
щоб вийти нано
редактор.
Тепер, нарешті, ми можемо перейти до створення блоку сервера, щоб Nginx міг обслуговувати index.html
коли якийсь користувач переходить до example.com
. Отже, щоб створити блок сервера, нам потрібно створити файл конфігурації з назвою example.com
в сайти-доступні
каталог. Для цього ми використовуємо nano і запускаємо:
sudo nano /etc/nginx/sites-available/example.com
А потім введіть або скопіюйте/вставте наступну конфігурацію. Потім натисніть ctrl+o
і введіть, щоб написати та зберегти. Аналогічно натисніть ctrl+x
щоб закрити редактор nano.
сервер { listen 80; слухати [::]:80; server_name example.com www.example.com; root /var/www/example-domain.com/html; індекс index.html; розташування / {try_files $uri $uri/ =404; } }
Наведена вище конфігурація подібна до конфігурації блоку сервера за замовчуванням, ми змінили корінь
оператор, щоб вказати на наш новий кореневий каталог і змінив файл ім'я_сервера
на наше доменне ім'я. У той час як Місцезнаходження{}
Оператор служить оператором для виявлення помилок, якщо файли не знайдено, і відображає помилку 404 клієнту.
Далі ми можемо ввімкнути блок нашого сервера, щоб Nginx працював example.com
веб-сторінки. Щоб увімкнути наш серверний блок, нам потрібно створити символічне посилання example.com
файл з сайти-доступні
до з підтримкою сайтів
каталог. Для цього запустіть:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
Посилання буде створено в з підтримкою сайту
каталог і зараз example.com
має бути увімкнено. Тепер на нашому сервері Nginx увімкнено два блоки сервера, які відповідатимуть на запит на основі слухати
і ім'я_сервера
директиви, збережені в example.com
конфігурація блоку сервера.
Щоб перевірити, чи всі файли конфігурації правильні та чи немає синтаксичних помилок, запустіть:
sudo nginx -t
Тепер, нарешті, перезапустіть Nginx, щоб застосувати зміни, виконавши таку команду:
sudo systemctl перезавантажте nginx
Nginx почне обслуговувати ваш серверний блок зараз, ви можете перейти до //your-domain-name
і побачити свою веб-сторінку в прямому ефірі.
Примітка: Щоб наведений вище розділ працював, вам потрібно налаштувати власний домен і замінити його example.com
з власним доменним іменем. Крім того, вам доведеться налаштувати DNS для вашого домену, щоб він вказував на IP-адресу вашого сервера Nginx.
На завершення ми розглянули, як встановити Nginx, налаштувати ufw
щоб дозволити віддалений доступ до сервера Nginx, віддалено підключений до Nginx, ознайомився з деякими основними файлами та каталогами Nginx і навчився налаштувати блок сервера.
Щоб дізнатися більше про Nginx, ви можете переглянути вікі Nginx.