Установку 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.