Nginx + PHP-FPM + SSL: Пълна настройка за производствен сървър

Nginx + PHP-FPM + SSL: Пълна настройка за производствен сървър

🔍 Защо тази статия?

Конкретна полза: Ще настроите бърз, сигурен и оптимизиран уеб сървър с HTTPS.

Специфично съдържание: Настройка на Nginx, PHP-FPM, Let's Encrypt SSL, кеширане, security headers и оптимизация.

Измерима стойност: Работещ HTTPS сайт за под 30 минути, дори ако сте напълно начинаещ. ✅


🚀 Какво ще постигнем?

  • Инсталираме Nginx и PHP-FPM
  • Настройваме виртуален хост (сайт)
  • Добавяме SSL сертификат с Let’s Encrypt
  • Активираме кеширане и HTTP заглавия за сигурност
  • Оптимизираме за скорост и производителност

🧱 Необходими изисквания

  • VPS/сървър с чиста Ubuntu 22.04 или по-нова
  • root достъп или потребител с sudo
  • Регистриран домейн (напр. example.com)
  • Посочен A-запис в DNS към IP адреса на сървъра

🛠️ Стъпка 1: Актуализиране на системата

sudo apt update && sudo apt upgrade -y

📌 Важно: Никога не пропускайте тази стъпка при нова инсталация!


🌐 Стъпка 2: Инсталиране на Nginx

sudo apt install nginx -y

Стартирайте и активирайте:

sudo systemctl start nginx
sudo systemctl enable nginx

Проверете:

systemctl status nginx

🔎 Бонус: Отворете IP адреса в браузъра. Трябва да видите "Welcome to Nginx".


🐘 Стъпка 3: Инсталиране на PHP и PHP-FPM

sudo apt install php-fpm php-mysql php-cli php-curl php-mbstring php-xml -y

Проверка на версия:

php -v

📌 Съвет: Ако използвате WordPress или Laravel, добавете и php-zip и php-bcmath.


📁 Стъпка 4: Създаване на root директория за сайта

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

Дайте права:

sudo chown -R $USER:www-data /var/www/example.com

Добавете примерен файл:

echo "<?php phpinfo(); ?>" > /var/www/example.com/public/index.php

⚙️ Стъпка 5: Конфигурация на Nginx виртуален хост

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

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

Добавете:

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

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

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

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

Активирайте сайта:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

✅ Готово! Сайтът работи по HTTP.


🔐 Стъпка 6: Добавяне на Let’s Encrypt SSL сертификат

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

sudo apt install certbot python3-certbot-nginx -y

Издайте сертификат:

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

Автоматично обновяване:

sudo systemctl enable certbot.timer

🔒 Вече имате HTTPS! Браузърът показва зелено катинарче. ✅


🚦 Стъпка 7: Добавяне на HTTP заглавия за сигурност

Отворете example.com конфигурацията:

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

Добавете вътре в server {}:

add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Permissions-Policy "geolocation=(), microphone=()";

Рестартирайте Nginx:
sudo systemctl reload nginx

🛡️ Повече сигурност с няколко реда конфигурация!


⚡ Стъпка 8: Кеширане с Nginx

Добавете това в server {}:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2?|ttf|svg)$ {
expires 30d;
access_log off;
add_header Cache-Control "public, no-transform";
}

📌 Резултат: По-бързо зареждане на сайта, по-малко натоварване на сървъра.


📈 Стъпка 9: Оптимизация за скорост

Ето няколко съвета:

🔁 Активиране на Gzip:

Добавете в nginx.conf:

gzip on;
gzip_types text/plain application/xml application/json application/javascript text/css;

🪪 Активирайте HTTP/2:

Променете:

listen 443 ssl http2;

🚀 Инсталирайте php-opcache:

sudo apt install php-opcache -y

Проверете дали е включен:

php -i | grep opcache.enable

📌 Съвет: За WordPress сайтове, активирайте и object cache (например Redis).


📊 Стъпка 10: Тест за скорост и сигурност

✅ Проверка на HTTPS:

👉 https://www.ssllabs.com/ssltest/

✅ Тест за скорост:

👉 https://pagespeed.web.dev/

✅ Тест за security headers:

👉 https://securityheaders.com/


📌 Финални препоръки

  • Използвайте fail2ban за защита от брутфорс атаки
  • Активирайте firewall: bashКопиранеРедактиранеsudo ufw allow 'Nginx Full' sudo ufw enable
  • Периодично проверявайте логовете: bashКопиранеРедактиранеtail -f /var/log/nginx/example.com.error.log

✅ Обобщение

КомпонентСъстояние
Nginx✅ Инсталиран
PHP-FPM✅ Свързан и активен
Let's Encrypt SSL✅ Автоматизиран
Кеширане✅ Активирано
Security Headers✅ Добавени
Оптимизация✅ Завършена

🏁 Заключение

Сега вече имате напълно работещ, сигурен и бърз уеб сървър с HTTPS, готов за продукционна среда. 🚀

Дори и като начинаещ, вече можете да настроите стабилен сървър за по-малко от 30 минути.

Ако тази статия ви беше полезна – споделете я с приятели и колеги. Нека повече хора създават бързи и защитени сайтове! 💡🌍

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: