nginx (engine x) — это веб-сервер и обратный прокси-сервер, а также почтовый прокси-сервер.
Установить в Ubuntu можно командой:
sudo apt install nginx
Полностью удалить можно так:
sudo apt purge nginx nginx-common nginx-core
Стандартный каталог для www файлов — /usr/share/nginx/www или /var/www/html.
После установки отредактируем конфигурационный файл /etc/nginx/nginx.conf по своим потребностям.
Ниже опишу некоторые параметры стандартного конфигурационного файла.
Пользователь от имени которого работает nginx:
user www-data;
Число рабочих процессов. Оптимальное значение зависит от многих факторов, количества ядер процессора, винчестеров, нагрузки. auto — устанавливается автоматически. Я устанавливаю равное количеству ядер одного процессора:
worker_processes 4;
Файл в котором будет храниться номер (PID) основного процесса:
pid /var/run/nginx.pid;
Количество соединений на процесс:
worker_connections 1768;
Если выключено, то рабочий процесс за раз будет принимать только одно новое соединение, иначе — все:
multi_accept on;
Включение или отключение sendfile:
sendfile on;
При включении позволяет передавать заголовок ответа и начало файла в одном пакете, передавать файл полными пакетами:
tcp_nopush on;
Использование параметра TCP_NODELAY. Используется при переходе соединения в состояние keep-alive:
tcp_nodelay on;
Время в секундах, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера:
keepalive_timeout 65;
Максимальный размер хэш-таблиц типов:
types_hash_max_size 2048;
Отображать ли версию nginx в сообщениях об ошибках и в поле «Server» заголовка ответа, рекомендую не показывать:
server_tokens off;
Размер корзины в хэш-таблицах имён серверов (32|64|128):
server_names_hash_bucket_size 64;
Указывание порта в перенаправлениях, выдаваемых от nginx:
server_name_in_redirect off;
Подключение к файлу конфигурации файла mime.types:
include /etc/nginx/mime.types;
MIME-тип ответов по умолчанию:
default_type application/octet-stream;
Путь, формат и настройки логов:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
Разрешает или запрещает сжатие ответа методом gzip:
gzip on;
Запрещает сжатие ответа методом gzip для запросов с полями заголовка “User-Agent” похожими на указанные:
gzip_disable "msie6";
Настройка сжатия ответа методом gzip для проксированных запросов:
«off» — запрещено,
«expired» — сжимать, если в заголовке ответа есть поле «Expires» со значением, запрещающим кэширование,
«no-cache» — сжимать, если в заголовке ответа есть поле «Cache-Control» с параметром «no-cache»,
«no-store» — сжимать, если в заголовке ответа есть поле «Cache-Control» с параметром «no-store»,
«private» — сжимать, если в заголовке ответа есть поле «Cache-Control» с параметром «private»,
«no_last_modified» — сжимать, если в заголовке ответа нет поля «Last-Modified»,
«no_etag» — сжимать, если в заголовке ответа нет поля «ETag»,
«auth» — сжимать, если в заголовке запроса есть поле «Authorization»,
«any» — сжимать все проксированные запросы.
gzip_proxied any;
Степень сжатия (от 1 до 9):
gzip_comp_level 6;
Число и размер буферов в которые будет сжиматься ответ:
gzip_buffers 16 8k;
Минимальная HTTP-версия запроса для сжатия ответа:
gzip_http_version 1.1;
Сжатие ответа методом gzip для указанных MIME-типов в дополнение к «text/html». «text/html» сжимаются всегда:
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
Загрузка всех файлов конфигурации из указанных директорий:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Создаем файл в директории /etc/nginx/sites-available/ с именем нашего домена.
Приведу пример содержимого файла как proxy apache2:
server {
listen 80;
server_name example.com www.example.com;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/example.com/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Активируем домен (то есть, делам ссылку в директорию с конфигами которые загружает nginx):
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Перезапускаем apache2 и nginx:
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart
Убедимся что веб серверы запущены:
sudo netstat -tulpn | grep nginx
sudo netstat -tulpn | grep apache2
Чтобы в логах отображались ip пользователей, а не 127.0.0.1, установим:
sudo apt-get install libapache2-mod-rpaf
и добавляем в конец конфига апача:
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Forwarded-For
Пример отключения/включения автозапуска nginx при запуске операционной системы (Ubuntu):
systemctl is-enabled nginx
systemctl disable nginx
systemctl enable nginx
Смотрите также мои статьи:
Настройка логов nginx
Установка WordPress и Nginx
Как настроить доступ по IP в nginx