Установка и настройка Nginx

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

Оставьте комментарий

Добавить комментарий