Что такое 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