Установка Nginx на FreeBSD не сильно отличается от установки на Linux, но все же накатаю заметку.
Установка Nginx
# whereis nginx nginx: /usr/ports/www/nginx # cd /usr/ports/www/nginx # make install clean
Выбираем с какими модулями нужен nginx. Каждому свое, но для простого старта хватит дефолтного выбора.
Нажимаем ОК и ждем завершения установки.
Когда установка закончилась, нужно добавить Nginx в автозапуск:
# ee /etc/rc.conf
Дописываем в конец:
nginx_enable="YES"
Сохраняем и закрываем.
Настройка виртуальных хостов
Что касается конфига, то тут я приведу только основную суть настройки виртуальных хостов по моему вкусу. Манов по настройке Nginx больше чем нужно, поэтому официальный сайт или гугл рулят в этом плане.
Изначально конфиг расчитан на то, что все настройки хостов будут в одном файле. Но на мой взгляд это не правильно начиная с момента, когда больше одного хоста на сервере. Почему? Да, потому что полная каша в конфиге. Это попросту неудобно. Поэтому будем в главный конфиг инклюдить мелкие конфиги хостов с папок, как это было организовано в прошлых версиях Nginx на linux (за фрю не знаю).
В начале создадим папки, в которых у нас будут конфиги:
# mkdir /usr/local/etc/nginx/sites-enabled/ # mkdir /usr/local/etc/nginx/sites-available/
sites-available — тут будут лежать все конфиги хостов
sites-enabled — в эту папаку будем бросать линки на нужные конфиги
Изначально у нас в конфиге есть дефолтный хост с примерами и пример настройки хоста с SSL. Делаем следующим образом… Создаем новый файл конфига и назовем его deafult и поместим в этот файл стандартные секции server.
Создаем файл:
# touch /usr/local/etc/nginx/sites-available/default
Открываем конфиг и переносим с него сексции в default:
# ee /usr/local/etc/nginx/nginx.conf
Потом внизу добавляем строку:
include /usr/local/etc/nginx/sites-enabled/*;
В конечном итоге должно получится нечто такого плана:
user nobody; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; include /usr/local/etc/nginx/sites-enabled/*; }
Сохраняем и закрываем.
Теперь включим хост. По сути тут метод тоже простой. Если в sites-enabled конфиг есть — будет работать, если нет — не будет работать. В нашем случае физически конфига там нет, но есть ссылка на него. То есть, конфиг может и лежать в sites-available, но если линка нет, хост не будет работь.
# ln -s /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
Осталось запустить сервис:
# service nginx start
Если всё хорошо, то получим такое сообщение:
Performing sanity check on nginx configuration: nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Starting nginx.
Добавление новых хостов
Процесс добавления новых хостов прост. Пойдем по порядку.
1. Создадим файл конфига хоста:
# ee /usr/local/etc/nginx/sites-available/site.com
2. Вписываем в него конфиг и сохраняем.
3. Создаем ссылку, то есть включаем хост в работу:
# ln -s /usr/local/etc/nginx/sites-available/site.com /usr/local/etc/nginx/sites-enabled/site.com
4. Перезагружаем Nginx:
# service nginx restart
Ну вот и всё. На мануал не претендует, это просто заметка для себя. 🙂
27 апреля, 2014 at 1:46 пп
[…] Уставнока и настройка простого веб-сервера не сложная, но ради заметки запишу сюда. Заметка по установке Nginx уже есть — Ставим Nginx и настраиваем виртуальные хосты на FreeBSD. […]
17 сентября, 2015 at 10:00 пп
Спасибо за статью, реально помогла настроить виртуальные хосты.
Столкнулся с ситуацией, если создать файл хоста с именем который будет находится выше (например):
abc.com
default
site.com
то все домены которые ведут на этот сервер, но не имеющие еще файла-конфигурации в nginx работают с файлом abc.com, хотя по идее должны натыкаться на заглушку default.
Решил ситуацию путем переименования файла default в !default, чтобы он находится выше всех файлов.
Хотел спросить может есть какое-то другое решение?