Установку nginx под FreeBSD, как и прежде, будем производить из коллекции портов. Перейдём в нужный порт, запустим процесс установки.
# cd /usr/ports/www/nginx # make install clean
После этого откроется псевдографическое меню выбора параметров установки. Чего только нет в модулях для nginx: mp4-стриминг, прокси для почтовых служб, балансер запросов и многое другое. Мы будем использовать nginx в качестве фронтэнда для других вебслужб или FastCGI, поэтому отметим только самые необходимые для этого модули.
┌────────────────────────────────────────────────────────────────────┐ │ Options for nginx 1.0.10,1 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │[X] IPV6 Enable IPv6 │ │ │ │[X] HTTP_MODULE Enable HTTP module │ │ │ │[X] HTTP_CACHE_MODULE Enable http_cache module │ │ │ │[X] HTTP_REWRITE_MODULE Enable http_rewrite module │ │ │ │[X] HTTP_STATUS_MODULE Enable http_stub_status module │ │ │ │[X] WWW Enable html sample files │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
Все остальные модули можно будет добавлять позже, при необходимости.
Планируется использоваться nginx для нескольких сайтов, поэтому создаём директорию, в которой будут храниться файлы разных виртуальных хостов.
# mkdir /usr/local/www/vhosts
Конфигурация каждого виртуального хоста будет храниться в отдельном файле-конфиге, в директории /usr/local/etc/nginx/includes, создадим данную директорию.
# mkdir /usr/local/etc/nginx/includes
Редактируем главный конфиг nginx и приводим к следующему виду.
# vi /usr/local/etc/nginx/nginx.conf
# Пользователь и группа, от которых будет работать nginx user nobody nobody; # Количество процессов, автор рекомендует в основном устанавливать в количество ядер процессоров в системе worker_processes 4; # Где будет находится pid-файл pid /var/run/nginx.pid; events { # Для FreeBSD use kqueue; # Количество обслуживаемых соединений на каждый процесс worker_connections 4096; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; send_lowat 12000; keepalive_timeout 60; gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain application/xml; client_header_timeout 15m; client_body_timeout 15m; send_timeout 15m; client_max_body_size 160m; proxy_buffering on; proxy_buffers 128 64k; proxy_buffer_size 64k; proxy_connect_timeout 900; proxy_read_timeout 900; proxy_send_timeout 900; fastcgi_read_timeout 900; fastcgi_send_timeout 900; include /usr/local/etc/nginx/includes/*.conf; }
После этого создадим конфиг-файл для отдельного виртуального хоста example.com в директории /usr/local/etc/nginx/includes/.
# vi /usr/local/etc/nginx/includes/example.com.conf
server { listen 10.10.10.2:80; server_name *.exapmle.com example.com; error_page 404 = @fallback; location / { proxy_pass http://10.10.10.2:8080; proxy_redirect http://10.10.10.2:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ { root /usr/local/www/vhosts/example.com; } }
Первым делом добавим nginx в автозагрузку при старте системы.
# echo 'nginx_enable="YES"' >> /etc/rc.conf
После чего проверяем правильность синтаксиса конфигурационных файлов.
# nginx -t
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
Наконец, запускаем вебсервер nginx.
# /usr/local/etc/rc.d/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.
Проверим, слушает ли nginx на 80-ом порту.
# netstat -Lan | grep 80
tcp4 0/0/4096 10.10.10.2.80
На этом установка и первоначальная настройка вебсервера nginx закончена. После установки первым делом неплохо было бы настроить ротацию логов в nginx.