Наполните свое приложение Laravel оптимизированной конфигурацией Nginx

Если вы используете приложение Laravel на Nginx, оптимизация конфигурации вашего сервера имеет важное значение для производительности и безопасности. В этой статье блога мы рассмотрим различные методы точной настройки конфигурации Nginx специально для Laravel, чтобы обеспечить бесперебойную и эффективную работу вашего приложения. Мы рассмотрим все: от обработки чистых URL-адресов до включения кеширования и HTTPS.

  1. Настройка чистых URL-адресов.
    По умолчанию Laravel использует папку publicв качестве точки входа для вашего приложения. Чтобы исключить необходимость использования /publicв ваших URL-адресах, вы можете изменить конфигурацию Nginx с помощью следующего фрагмента кода:
server {
    listen 80;
    server_name your_domain.com;
    root /path/to/your/laravel/public;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    # Other Nginx directives...
}

Эта конфигурация использует директиву try_filesдля проверки существования файла или каталога и, если нет, передает запрос в index.phpдля дальнейшей обработки.

  1. Включение сжатия Gzip.
    Сжатие ответов вашего сервера может значительно сократить время загрузки страницы. Чтобы включить сжатие gzip в Nginx, добавьте в свою конфигурацию следующий код:
server {
    # Other directives...
    gzip on;
    gzip_types text/plain text/css application/javascript application/json;
    gzip_min_length 1000;
    gzip_proxied expired no-cache no-store private auth;
    gzip_comp_level 6;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    # Other Nginx directives...
}

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

  1. Реализация кэширования.
    Кэширование может значительно повысить производительность вашего приложения Laravel. Nginx предлагает встроенный механизм кэширования под названием proxy_cache. Вот пример настройки кеширования для статических ресурсов:
server {
    # Other directives...
    location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
        expires 7d;
        add_header Pragma public;
        add_header Cache-Control "public";
        proxy_cache cache;
        proxy_cache_valid 200 302 7d;
        proxy_cache_valid 301 1y;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        # Other Nginx directives...
    }
}

Этот фрагмент включает кэширование CSS, JavaScript и файлов изображений, соответствующим образом устанавливая время истечения срока действия и заголовки управления кэшем.

  1. Обеспечение использования HTTPS.
    Чтобы обеспечить безопасную связь между вашим приложением Laravel и клиентами, рекомендуется принудительно использовать HTTPS. Вот как перенаправить все HTTP-запросы на HTTPS:
server {
    # Other directives...
    listen 80;
    server_name your_domain.com;
    return 301 https://$host$request_uri;
    # Other Nginx directives...
}
server {
    # Other directives...
    listen 443 ssl http2;
    server_name your_domain.com;
    ssl_certificate /path/to/your/ssl_certificate.crt;
    ssl_certificate_key /path/to/your/ssl_certificate.key;
    # Other Nginx directives...
}

Первый блок сервера прослушивает порт 80 и перенаправляет все HTTP-запросы на HTTPS. Второй блок прослушивает порт 443, включая SSL и указывая сертификат SSL и пути к ключам.

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