Если вы используете приложение Laravel на Nginx, оптимизация конфигурации вашего сервера имеет важное значение для производительности и безопасности. В этой статье блога мы рассмотрим различные методы точной настройки конфигурации Nginx специально для Laravel, чтобы обеспечить бесперебойную и эффективную работу вашего приложения. Мы рассмотрим все: от обработки чистых URL-адресов до включения кеширования и HTTPS.
- Настройка чистых 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для дальнейшей обработки.
- Включение сжатия 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 для определенных типов файлов, устанавливает минимальный размер ответа для сжатия и указывает уровень сжатия.
- Реализация кэширования.
Кэширование может значительно повысить производительность вашего приложения 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 и файлов изображений, соответствующим образом устанавливая время истечения срока действия и заголовки управления кэшем.
- Обеспечение использования 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, вы можете оптимизировать настройку сервера, повысить производительность и обеспечить безопасную среду для вашего приложения. Не забывайте регулярно отслеживать и настраивать свою конфигурацию с учетом ваших конкретных требований и структуры трафика.