Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux Администрация

Инсталиране и конфигуриране на Nginx на CentOS 7: Пълно ръководство стъпка по стъпка

Nginx е един от най-мощните и широко приети open-source уеб сървъри в света. Известен със своята изключителна производителност, нисък разход на памет и способност да обработва хиляди едновременни връзки, Nginx е предпочитаното решение за сервиране на статично съдържание, действане като обратен прокси и извършване на балансиране на натоварването в разпределени системи.

Независимо дали управлявате личен блог, платформа за електронна търговия с висок трафик или сложна архитектура на микросервизи, Nginx доставя скоростта и надеждността, които вашите потребители изискват. Това всеобхватно ръководство ви преведе през всяка стъпка на инсталиране, конфигуриране, защита и оптимизиране на Nginx на сървър CentOS 7 — от начална подготовка на системата до активиране на HTTPS с безплатен SSL сертификат от Let's Encrypt.

> Предварителни изисквания: Сървър CentOS 7 с root или sudo достъп. Ако имате нужда от надежна, високопроизводителна среда, за да следвате инструкциите, помислете да изследвате VPS Hosting от AlexHost — специално разработен за изискващи работни натоварвания с пълен root достъп и SSD хранилище.

Стъпка 1: Актуализирайте вашата система

Преди инсталирането на нов софтуер е критично да се уверите, че вашата CentOS 7 система е напълно актуална. Остарелите пакети могат да въведат уязвимости в сигурността и конфликти на зависимостите, които усложняват процеса на инсталиране.

Отворете вашия терминал и изпълнете следната команда:

sudo yum update -y

Тази команда актуализира всички инсталирани пакети до техните най-нови налични версии. Флагът -y автоматично потвърждава всички подкани, което прави процеса неинтерактивен. Позволете актуализирането да се завърши напълно преди да продължите.

Стъпка 2: Инсталирайте Nginx чрез YUM

Nginx не е достъпен в хранилищата по подразбиране на CentOS 7. Първо трябва да инсталирате хранилището EPEL (Extra Packages for Enterprise Linux), което предоставя широк спектър от допълнителни софтуерни пакети за дистрибуции, базирани на RHEL.

Инсталирайте хранилището EPEL:

sudo yum install epel-release -y

Инсталирайте Nginx:

sudo yum install nginx -y

Тази команда изтегля и инсталира Nginx заедно с всички необходими зависимости. След завършване на инсталацията можете да проверите инсталираната версия с:

nginx -v

Трябва да видите изход, подобен на:

nginx version: nginx/1.20.x

Стъпка 3: Стартиране и активиране на услугата Nginx

С инсталирания Nginx трябва да стартирате услугата и да я конфигурирате да се стартира автоматично всеки път, когато сървърът се рестартира.

Стартирайте услугата Nginx:

sudo systemctl start nginx

Активирайте Nginx да се стартира при зареждане:

sudo systemctl enable nginx

Проверете статуса на услугата, за да потвърдите, че работи:

sudo systemctl status nginx

Трябва да видите изход, указващ, че услугата е активна (работи):

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
   Active: active (running) since ...

Ако услугата не се стартира, прегледайте регистрите на грешките на /var/log/nginx/error.log за диагностична информация.

Стъпка 4: Конфигуриране на защитната стена

CentOS 7 използва firewalld като своя инструмент за управление на защитната стена по подразбиране. По подразбиране трафикът HTTP (порт 80) и HTTPS (порт 443) е блокиран. Трябва да отворите явно тези портове, за да позволите на уеб трафика да достигне вашия Nginx сървър.

Разрешаване на HTTP трафик:

sudo firewall-cmd --permanent --add-service=http

Разрешаване на HTTPS трафик:

sudo firewall-cmd --permanent --add-service=https

Презареждане на защитната стена, за да приложите промените:

sudo firewall-cmd --reload

Проверка на активните правила:

sudo firewall-cmd --list-all

Трябва да видите както http така и https изброени под секцията services на резултата. Ако вашият сървър е разположен зад външна защитна стена или група за сигурност (често при облачни доставчици), уверете се, че тези правила също са актуализирани, за да позволят трафик на портове 80 и 443.

Стъпка 5: Проверка на инсталацията

За да потвърдите, че Nginx е инсталиран правилно и обслужва съдържание, отворете уеб браузър и навигирайте към публичния IP адрес на вашия сървър:

http://your_server_ip

Трябва да видите страницата за приветствие на Nginx по подразбиране, която показва съобщението *"Welcome to nginx!"*. Това потвърждава, че уеб сървърът е работещ и достъпен от интернет.

Ако не видите страницата за приветствие, проверете отново следното:

  • Услугата Nginx е работеща (sudo systemctl status nginx)
  • Правилата на защитната стена са правилно приложени
  • IP адресът на вашия сървър е правилен
  • Никоя друга услуга (като Apache) не заема порт 80

Стъпка 6: Конфигуриране на Nginx Server Blocks

Nginx използва server blocks (функционално еквивалентни на Apache virtual hosts) за определяне на начина, по който обработва заявките за различни домейни или поддомейни. Всеки server block обикновено се съхранява като отделен конфигурационен файл в директорията /etc/nginx/conf.d/.

Основният Nginx конфигурационен файл се намира в /etc/nginx/nginx.conf. Той включва директива, която автоматично зарежда всички .conf файлове от директорията conf.d, което поддържа вашата конфигурация модулна и лесна за управление.

Стъпка 6a: Създаване на нов Server Block конфигурационен файл

Създайте нов конфигурационен файл за вашия домейн. Заменете example.com с вашето действително име на домейн:

sudo nano /etc/nginx/conf.d/example.com.conf

Добавете следната server block конфигурация:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm index.php;

    # Logging
    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

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

    # Deny access to hidden files
    location ~ /. {
        deny all;
    }
}

Обяснени ключови директиви:

ДирективаОписание
listen 80Инструктира Nginx да слуша входящи връзки на порт 80 (HTTP)
server_nameОпределя имената на домейните, на които този server block отговаря
rootУказва директорията на документния корен, където се съхраняват файловете на уебсайта
indexОпределя файловете по подразбиране, които Nginx ще обслужва, когато се поиска директория
try_filesОпитва се да обслужи поисканата URI като файл, след това като директория, и връща 404, ако нито един не съществува
access_log / error_logОпределя отделни логови файлове за този виртуален хост за по-лесно отстраняване на грешки

Запазете файла и излезте от редактора (Ctrl+X, след това Y, след това Enter в nano).

Стъпка 7: Създайте коренната директория на документа и тестовия файл

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

sudo mkdir -p /var/www/example.com/html

Създайте прост index.html файл, за да проверите дали блокът сървър работи правилно:

echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.html

Задайте правилния собственик и разрешения, така че Nginx да може да чете файловете:

sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/

> Забележка за SELinux: CentOS 7 се доставя с SELinux активиран по подразбиране. Ако Nginx не може да чете вашите уеб файлове дори с правилни разрешения, може да се наложи да приложите подходящия контекст на SELinux:

> “`bash

> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/

> “`

Стъпка 8: Тестване на конфигурацията на Nginx

Преди да рестартирате Nginx, за да приложите новата конфигурация, винаги тествайте за синтаксни грешки. Неправилно конфигуриран файл може да спре целия ви уеб сървър.

Изпълнете теста на конфигурацията:

sudo nginx -t

Успешният тест произвежда следния резултат:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ако се докладват грешки, внимателно прегледайте посочените номера на редовете във вашите конфигурационни файлове и коригирайте всички проблеми, преди да продължите.

Рестартирайте Nginx, за да приложите промените:

sudo systemctl restart nginx

Като алтернатива, ако искате да преизчислите конфигурацията без прекъсване на активни връзки (препоръчано за производствени среди), използвайте:

sudo systemctl reload nginx

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

Стъпка 9: Настройка на HTTPS с Let’s Encrypt

Работата на уебсайт над обикновен HTTP изложува вашите потребители на потенциално подслушване и атаки от средата. Защитата на вашия сайт с HTTPS вече не е опционална — това е фундаментално изискване за доверието на потребителите, интегритета на данните и класирането в търсачките.

Let’s Encrypt предоставя безплатни, автоматизирани и надеждни SSL/TLS сертификати. Можете също да изследвате премиум SSL сертификати от AlexHost за разширена валидация и опции с валидация на организацията, които предлагат по-високи нива на доверие за бизнес уебсайтове.

Инсталиране на Certbot и Nginx плъгина

sudo yum install certbot python2-certbot-nginx -y

Получаване и инсталиране на SSL сертификата

Стартирайте Certbot с плъгина --nginx, който автоматично модифицира вашата Nginx конфигурация, за да активира HTTPS:

sudo certbot --nginx -d example.com -d www.example.com

Следвайте интерактивните подсказки:

  1. Въведете вашия имейл адрес за известия за подновяване
  2. Съгласете се с Условията на услугата на Let’s Encrypt
  3. Изберете дали да пренасочите трафика от HTTP към HTTPS (силно препоръчано — изберете опция 2)

Certbot автоматично ще:

  • Получи подписан сертификат от Let’s Encrypt
  • Модифицира вашия /etc/nginx/conf.d/example.com.conf да включи SSL директиви
  • Конфигурира пренасочване от HTTP към HTTPS

След завършване, проверете HTTPS конфигурацията, като посетите:

https://example.com

Вашият браузър трябва да покаже икона на катинар, потвърждавайки че връзката е криптирана.

Стъпка 10: Автоматизирайте подновяването на сертификата

Сертификатите на Let's Encrypt са валидни за 90 дни. Неподновяването им преди изтичането на срока ще причини на вашия сайт да показва предупреждения за сигурност на посетителите, което сериозно ще повлияе на доверието на потребителите и трафика.

Тестирайте процеса на подновяване

Преди да настроите автоматизацията, проверете дали процесът на подновяване работи правилно:

sudo certbot renew --dry-run

Успешното сухо изпълнение потвърждава, че автоматичното подновяване ще работи без проблеми.

Настройте Cron Job за автоматично подновяване

Отворете root crontab:

sudo crontab -e

Добавете следния ред, за да проверите и подновите сертификатите два пъти дневно (препоръчаната честота):

0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Обяснение на cron графика:

    0 0,12 * * * — Работи в полунощ и обяд всеки ден
    --quiet — Потиска изхода, освен ако не възникне грешка
    --post-hook "systemctl reload nginx" — Презарежда Nginx след успешно подновяване, за да приложи новия сертификат без престой
    
    Запазете и затворете редактора на crontab. Вашите SSL сертификати сега ще се подновяват автоматично, като поддържат вашия сайт защитен без никакво ръчно вмешателство.
    Съвети за оптимизация на производителността на Nginx на CentOS 7
    След като основната конфигурация е завършена, помислете за тези подобрения на конфигурацията, за да максимизирате производителността на Nginx:
    Активирайте Gzip компресия
    Добавете следното към вашия nginx.conf в блока http {}, за да намалите размера на отговорите, изпращани към клиентите:
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
    Конфигурирайте кеширане на браузъра
    Добавете cache-control заглавки за статични активи, за да намалите натоварването на сървъра и да подобрите времето за зареждане на страницата:
    location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
    Настройте работни процеси
    В /etc/nginx/nginx.conf, задайте броя на работните процеси, за да съответства на броя на CPU ядрата на вашия сървър:
    worker_processes auto;
    worker_connections 1024;
    > За приложения, които използват много ресурси, или уебсайтове с висок трафик, помислете за надграждане на Dedicated Servers от AlexHost, които осигуряват гарантирани CPU, RAM и ресурси за съхранение без ефекти на шумни съседи.
    Управление на множество уебсайтове с Nginx
    Една от най-големите силни страни на Nginx е способността му да хостира множество уебсайтове на един сървър чрез server blocks. За всеки допълнителен домейн, просто:
    
    Създайте нов .conf файл в /etc/nginx/conf.d/
  • Дефинирайте уникална server_name директива
  • Посочете root директивата към подходящия document root
  • Изпълнете sudo nginx -t и sudo systemctl reload nginx
  • Ако предпочитате графичен интерфейс за управление на вашия уеб сървър, виртуални хостове, бази данни и имейл акаунти, помислете за VPS с cPanel — напълно управлявано решение с контролен панел, което опростява администрирането на сървъра без да жертвате гъвкавостта.

    Алтернативно, разгледайте пълния спектър от VPS контролни панели от AlexHost, включително Plesk, DirectAdmin и други опции, подходящи за различни работни процеси и технически предпочитания.

    Отстраняване на често срещани проблеми с Nginx на CentOS 7

    ПроблемВероятна причинаРешение
    Nginx не се стартираПортът 80/443 вече е в употребаИзпълнете `sudo ss -tlnpgrep :80` за идентифициране на конфликтния процес
    Грешка 403 ForbiddenНеправилни разрешения за файлове или SELinux контекстПроверете chmod/chown и приложете chcon за SELinux
    502 Bad GatewayUpstream backend (PHP-FPM, Node.js) не работиПроверете дали услугата на backend е активна и че socket/портът е правилен
    SSL сертификатът не се подновяваCertbot не може да се свърже с портът 80Уверете се, че портът 80 е отворен и че никой друг процес не го блокира
    Промените не влизат в силаКонфигурацията не е презареденаИзпълнете sudo systemctl reload nginx след всяка промяна на конфигурацията

    Заключение

    Вие успешно инсталирахте, конфигурирахте и защитихте Nginx на CentOS 7. Вашият сървър е готов да хоства уебсайтове с висока производителност, да обработва едновременни връзки ефективно и да предоставя съдържание чрез криптирани HTTPS връзки — всички съществени качества за съвременна, production-grade уеб среда.

    Ето резюме на постигнатото:

    • ✅ Актуализирахте CentOS 7 системата и инсталирахте Nginx чрез EPEL хранилище
    • ✅ Стартирахте и активирахте Nginx услугата за автоматичен старт при включване
    • ✅ Конфигурирахте firewalld да позволява HTTP и HTTPS трафик
    • ✅ Създадохте и конфигурирахте персонализиран server block за домейн
    • ✅ Установихте правилни разрешения за файлове и SELinux контексти за document root
    • ✅ Тестирахте конфигурацията за синтаксни грешки преди прилагане на промени
    • ✅ Защитихте сайта с безплатен Let’s Encrypt SSL сертификат чрез Certbot
    • ✅ Автоматизирахте обновяване на сертификата с cron job

    Поддържането на защитен и високопроизводителен уеб сървър изисква постоянно внимание. Поддържайте Nginx редовно актуализиран, наблюдавайте вашите access и error логове и преглеждайте вашата конфигурация, докато изискванията на вашия сайт се развиват.

    Ако търсите надежна основа за хостване на вашите Nginx проекти, AlexHost предлага пълен спектър решения — от начално ниво Shared Web Hosting за по-малки сайтове до високопроизводителен VPS и dedicated инфраструктура за претежки приложения. Всеки план е подкрепен от enterprise-grade хардуер, 24/7 техническа поддръжка и ангажимент към uptime и сигурност.