Настройка nginx для Laravel

Настройка nginx для Laravel
2 мин
Автор PINTA IT

Что такое nginx вы можете прочитать на официальном сайте. Задача стоит: установить nginx, настроить виртуальный хост, на котором разместить приложение Laravel. Задача простая, но в ходе настроек могут возникнуть трудности, поэтому я и решил подробно описать процесс настройки. В качестве сервера выступает Ubuntu 18.04

  • установим nginx
  • рассмотрим основной файл конфигурации nginx
  • создадим виртуальный хост
  • запустим тест конфигурации
  • рассмотрим основные команды управления nginx

Установка nginx.

Для установки nginx в Ubuntu необходимо в консоли выполнить следующую команду:

sudo apt-get install nginx

Ждем. На момент написания статьи была nginx версии 1.14.0. Все nginx установили, теперь мы можем приступить к настройке самого nginx.

Настройка nginx.

Файлы конфигурации nginx находятся /ete/nginx. Основной файл конфигурации nginx.conf.

  • user – указывает от чьего имени запускается nginx
  • worker_processes – устанавливается в auto или указывается число равное числу процессоров системы
  • pid тут все понятно
  • include /etc/nginx/module-enabled/*.conf – где хранятся подключаемые модули.
  • worker_connections – максимальное количество соединений на один процесс. Максимальное число обслуживания клиентов равно worker_processes * worker_connections

Дальше идет секция http:

  • sendfile – позволяет отправлять данные в сеть минуя адресное пространство приложения, что сказывается на быстродействии. В большинстве случаев лучше ставить on
  • tcp_nodelay – при включении данной опции заставляет сокет отправлять данные в буфер вне зависимости от размера пакета
  • tcp_nopush – работает как противоположность tcp_nodelay, но реализована только во FreeBSD
  • keepalive_timeout – устанавливает максимальное количество времени для поддержания соединения, если по нему не передаются данные. Так, например, если мы используем статичные страницы, то данный параметр можно уменьшить (ведь данные мы отдали и все)
  • type_hash_max_size – устанавливает максимальный размер хэш таблиц
  • include /etc/nginx/mime.types – устанавливает путь к файлу со списком mime-type
  • default_type – устанавливать mime-type по умолчанию
  • ssl_protocols – список поддерживаемых ssl протоколов
  • ssl_prefer_server_ciphers – включенный параметр заставляет соблюдать все настройки по ssl
  • access_log и error_log – указываем где будут хранится логи
  • gzip – ставим on, тем самым включаем режим сжатия
  • include /etc/nginx/conf.d/*.conf – указываем где будет хранится конфигурация для виртуальных хостов
  • include /etc/nginx/sites-enabled/* — указываем где будут хранится виртуальные хосты

Вот мы и рассмотрели дефолтный конфиг nginx. В большинстве случаев его менять и не надо. Теперь переходим к настройке виртуального хоста.

Настройка виртуального хоста в nginx

Напомню, что виртуальный хост мы настраиваем для работы с Laravel (по большому счету, это не имеет большого значения)

Переходим /etc/nginx/sites-available. Для этого в консоли вводим команду:

cd /etc/nginx/sites-available

Теперь копируем файл default:

sudo cp ./default laravel.loc

Проверяем:

ls

Файл для виртуального хоста laravel.loc скопирован.  Открываем его на редактирование и помещаем в него следующий код:

server {

listen 80;

server_name laravel.loc;

root /var/www/laravel.loc;

 

index index.html index.htm index.php;

 

charset utf-8;

 

location / {

try_files $uri $uri/ /index.php?$query_string;

}

 

location = /favicon.ico { access_log off; log_not_found off; }

location = /robots.txt  { access_log off; log_not_found off; }

 

access_log off;

error_log  /var/log/nginx/laravel.loc-error.log error;

 

error_page 404 /index.php;

 

sendfile off;

 

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

 

location ~ /\.ht {

deny all;

}

}

Сохраняем. Теперь создадим ссылку на наш виртуальный хост. Для этого выполните следующую команду:

sudo ln -s /etc/nginx/sites-available/Laravel.loc /etc/nginx/sites-enabled/

Все. Проверяем конфигурацию, для этого выполните следующую команду:

sudo nginx -t

Все можем запускать nginx.

Команды для управления nginx

Для управления nginx в основном используются следующие команды:

  • service nginx start – запуск nginx
  • service nginx stop – остановка nginx
  • service nginx restart – перезапуск nginx
  • service nginx reload – перечитывание конфигурационного файла без перезапуска nginx
  • service nginx status – проверка статуса nginx

Похожие публикации