Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Настройка VDS на Ubuntu 14.04. Часть 5. Установка и настройка NGINX

34 комментариев
Установка и настройка NGINX

Мы продолжаем цикл статей о настройке VDS с операционной системой Ubuntu 14.04. В сегодняшней части мы приступим к установке необходимого программного обеспечения на сервер после аренды VPS сервера. Конкретные приложения, о которых сегодня пойдет речь, рассматривались нами в предыдущей статье, где мы рассказали об основном программном обеспечении, которое требуется на сервере, а также описали его основной функционал.
Сегодня мы не только установим и настроим данное программное обеспечение, но и приведем основные команды, необходимые для управления им.
В первую очередь речь пойдет о веб-сервере. На данный момент существует несколько разных веб-серверов, но мы остановимся на наиболее популярных и эффективных веб-серверах: NGINX и Apache. Их описание было также приведено в прошлой статье, напомним, что их можно использовать как раздельно, так и в различных связках. Существуют различные схемы их использования, например:

  1. NGINX + PHP-FPM - для работы PHP приложений;
  2. NGINX + UWSGI/GUNICORN - для работы Django;
  3. NGINX + APACHE + mod_php/mod_python - производительная связка с использованием сильных сторон обоих серверов;
  4. APACHE + mod_php/mod_python - классическая схема.

Рекомендуем Вам выбрать нужную для работы Вашего сайта схему. Если Вы затрудняетесь, используйте универсальные схемы с учетом языка программирования сайта: NGINX + PHP-FPM (UWSGI/GUNICORN) и APACHE + mod_php(mod_python). Теперь, когда Вы определились c тем, какой или какие веб-серверы Вы будете использовать, мы перейдем напрямую к процессу установки веб-сервера NGINX.

В данной статье мы рассмотрим лишь основные, общие параметры NGINX; полную и более детальную документацию Вы найдете на официальном сайте NGINX: http://nginx.org/ru/docs/

NGINX является одним из самых популярных веб-серверов и имеет широкое применение в различных областях. Он позволяет не только обрабатывать запросы, но и качественно фильтровать их, а также балансировать нагрузку.

Установка NGINX

Установка сервера может быть выполнена либо из стандартного репозитория операционной системы (в данном случае Ubuntu 14.04), либо из отдельного репозитория разработчиков NGINX: http://nginx.org/ru/linux_packages.html.

Вариант 1: установка NGINX из репозитория операционной системы

Для установки из репозитория достаточно выполнить команду apt-get. Если Вы затрудняетесь в выборе количества включенных в программу библиотек, Вы можете установить полный пакет:

$ sudo apt-get install nginx-full

Если же требуется обычный пакет, то введите следующую команду:

$ sudo apt-get install nginx

Вариант 2: установка NGINX из репозитория разработчика

Для начала нам необходимо добавить ключ репозитория:

$ sudo wget http://nginx.org/keys/nginx_signing.key
$ sudo apt-key add nginx_signing.key

Далее откройте список репозиториев:

$ sudo vi /etc/apt/sources.list

И добавьте в конец файла следующие строки:

deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

Теперь необходимо сохранить изменения в файле и выполнить следующие команды:

$ sudo apt-get update
$ sudo apt-get install nginx

После выполнения всех команд необходимо проверить корректность установки. Для этого наберите в адресной строке браузера IP-адрес Вашего сервера, Вы должны увидеть страницу приветствия сервера Nginx:

NGINX


Если страница открывается корректно, без возникновения ошибок, значит, установка завершена, и можно переходить к настройке.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Общая настройка NGINX

Настройка NGINX состоит из нескольких блоков. Если Вы используете последние версии NGINX, то для получения актуальной информации мы рекомендуем Вам использовать официальные справочные данные, так как в зависимости от версий настройки могут отличаться.

Модули, из которых состоит NGINX, можно настроить при помощи директив, которые, в свою очередь, подразделяются на простые и блочные. Блочная директива отличается от простой тем, что в ней содержатся дополнительные инструкции. Контекст – это блочная директива, внутри которой можно задавать другие директивы. Что касается блоков, то для настройки NGINX необходимо остановиться на следующих разновидностях: блок server отвечает за конфигурацию для виртуального сервера, в блоке http (в котором находится блок server) прописываются директивы HTTP-сервера, а блоки location определяют конфигурацию в зависимости от URI-запроса.

Теперь перейдем к самому процессу настройки NGINX.

Для начала необходимо настроить файл nginx.conf:

$ sudo nano /etc/nginx/nginx.conf

В этом файле Вы можете посмотреть все основные параметры. Рассмотрим, что обозначает каждая из директив:

  • User – пользователь и группа, права которых будут использоваться для запуска рабочего процесса;
  • worker_processes – число рабочих процессов (воркеров). Рекомендуется поставить значение “auto”, т.к. число будет равно числу процессорных ядер;
  • error_log – конфигурирует запись в лог;
  • pid - определяет, в каком файле будет храниться номер основного процесса;

блок events:

  • worker_connections – определяет максимальное количество соединений, которые одновременно может открыть рабочий процесс;
  • use - метод, который будет использоваться для обработки соединений;
  • multi_accept - определяет, какое количество соединений будет принимать рабочий процесс за один раз (on – все новые соединения; off – только одно новое соединение);

блок http:

  • include – включение файла или файлов, которые подходят под заданную маску;
  • default_type - тип данных по умолчанию;
  • server_tokens – позволяет включить (on) или отключить (off) вывод версии NGINX в заголовках ответа или ошибках;
  • sendfile – позволяет включить (on) или отключить (off) метод отправки данных sendfile();
  • sendfile_max_chunk - определяет объем данных, который может передаваться за один вызов sendfile. Если установить на ноль, то одно быстрое соединение может полностью захватить рабочий процесс;
  • tcp_nopush – при включении позволяет передавать заголовок ответа и начало файла одним пакетом, а также передавать файл целым пакетом;
  • reset_timedout_connection - позволяет включить (on) или отключить (off) сброс соединений по таймауту;
  • client_header_timeout – определяет время, за которое клиент должен успеть передать полностью заголовок;
  • client_body_timeout – определяет таймаут при чтении тела запроса клиента;
  • send_timeout – задается время, по истечении которого соединение закрывается, если клиент ничего не принимает;
  • client_header_buffer_size – определяет буфер для чтения заголовка запроса клиента (по умолчанию равняется 1K);
  • client_body_buffer_size – определяет буфер для чтения тела запроса клиента;
  • client_max_body_size – определяет максимально допустимый размер тела запроса клиента;
  • access_log - позволяет включить (on) или отключить (off) лог доступа;
  • include – подключение дополнительных конфигураций.

Поэтапная настройка NGINX

Рекомендуем Вам сначала проверить и скорректировать настройки по умолчанию в файле /etc/nginx/nginx.conf.

Начните настройку с проверки или указания пользователя, от имени которого Вы будете работать:

user admin;

Затем укажите число рабочих процессов. Мы советуем исходить из количества процессорных ядер в Вашем сервере, то есть число рабочих процессов будет равняться числу процессорных ядер (но Вы можете поставить и какое-либо другое значение). Это число задается следующей командой:

worker_processes 2;

Далее Вы можете указать место, куда будут записываться файлы с логами ошибок:

error_log /spool/logs/nginx/nginx.error_log notice;

Всего существует 7 уровней уведомлений: info, notice, warn, error, crit, alert и emerg. Уровни перечислены в порядке от наименее важных сообщений к наиболее важным. Выставляя уровень, учитывайте, что в файл логов будут попадать все сообщения этого и более высоких по важности уровней.

Затем Вам нужно будет выбрать метод обработки соединений. Если Вы затрудняетесь в выборе, тогда NGINX самостоятельно выбирает метод, который является наиболее эффективным. Ознакомиться со всеми поддерживаемыми методами Вы можете по этой ссылке: http://nginx.org/ru/docs/events.html

Теперь Вы должны определиться с максимальным числом соединений, которое одновременно будет обрабатывать рабочий процесс. Высчитывая это число, держите в уме, что максимальное количество обслуживаемых клиентов будет равно произведению worker_connections и worker_processes.
У Вас должен получиться похожий код:

events {
worker_connections 2048;
}

В следующем блоке настроек первым делом необходимо включить sendfile(), так как это позволяет улучшить производительность сервера:

sendfile on; 

Далее выставите параметр, касающийся времени поддержания соединения, если по нему нет запросов:

keepalive_timeout 15;

Теперь Вам необходимо включить файл, отвечающий за поддержку MIME-типов, используя директиву include:

include /etc/nginx/mime.types;

Данная настройка определяет соответствие между MIME-типами и расширениями имен файлов, и, как правило, этот файл содержит большинство соответствий. В данном случае соответствие будет задаваться директивой types. Полный список соответствий Вы можете найти в файле conf/mime.types.

Далее Вам нужно указать тип данных по умолчанию:

default_type application/octet-stream;

Теперь перейдем к настройке, которая касается сжатия; за нее отвечает модуль gzip. Благодаря ему размер данных, которые передаются, может быть уменьшен в два раза и более. Строка со включенным gzip выглядит следующим образом:

gzip on;

Поэтому если Вы хотите выключить сжатие ответа данным методом, вместо “on” Вам нужно написать “off”.
Следующее, с чем необходимо определиться, - это размер и количество буферов, в которые будет сжиматься ответ:

gzip_buffers 16 8k;

При этом размер одного буфера, как правило, соответствует размеру страницы.

Теперь укажите, на каком уровне компрессии будет происходить сжатие (выбирайте значение от 1 до 9):

gzip_comp_level 7;

Еще одна из возможных настроек - минимальная длина ответа, для которого будет использовано сжатие:

gzip_min_length 512;

Вы можете также определить, к каким MIME-типам будет применено сжатие ответа при помощи gzip. По умолчанию эта строка выглядит так:

gzip_types text/html

Но Вы можете добавить и какие-либо еще типы. Если Вы хотите, чтобы сжатие применялось ко всем MIME-типам, тогда введите знак звездочки “*”.

Сжатие ответа для проксированных запросов определяется отдельным параметром:

gzip_proxied any;

По умолчанию эта возможность выключена (off), но Вы можете установить там один или несколько других параметров, к примеру, “auth” разрешит использование gzip, если заголовок вопроса содержит поле “Authorization”. Параметр “Any” делает возможным сжатие для всех проксированных запросов.

Теперь давайте перейдем к настройке файлов логирования.

За запись логов в NGINX отвечает модуль ngx_http_log_module. Он записывает логи в том формате, который указан; по умолчанию (если Вы не укажите какой-либо другой) выбирается “combined”:

access_log logs/access.log combined

Обычно логи сохраняются в директории location, при этом Вы можете сделать перенаправление, и тогда location будет отличным от изначального.
Сама конфигурация логов может выглядеть следующим образом:

log_format compression '$remote_addr - $remote_user [$time_local] '
 '"$request" $status $bytes_sent '
 '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/nginx-access.log compression buffer=32k;

Давайте рассмотрим каждую из директив данной конфигурации:

  • log_format – определяет формат логов; Вы можете использовать как общие переменные, так и переменные, которые существуют только в тот момент, когда происходит запись в лог. К примеру, в данной директиве:
  • $remote_addr – адрес клиента;
  • $remote_user – имя пользователя;
  • $time_local - локальное время;
  • $request - первоначальная строка запроса целиком;
  • $status – статус ответа;
  • $bytes_sent – размер байт, которые были переданы клиенту;
  • $http_referer и $http_user_agent - поля заголовка запроса клиента;
  • $gzip_ratio - достигнутый коэффициента сжатия будет записан в лог.

Следующая директива access_log указывает путь, формат (будет сжат файл или нет) и настройки записей. Также существует директива open_log_file_cache, которая определяет кэш, где будут храниться файловые дескрипторы тех логов, которые часто используются.

При желании Вы можете сделать запись буферизированной. Есть два способа сделать это: можно использовать параметр buffer, определив размер буфера (размер по умолчанию равняется 64 Кбайт), либо укажите параметр gzip (этот параметр также отвечает за сжатие файла: Вы можете выбрать значение от 1 до 9, при этом 1 равняется быстрому, но не очень хорошему сжатию, а 9 равняется хорошему, но медленному сжатию). Для чтения подобных сжатых логов файл необходимо распаковывать, либо Вы можете использовать утилиту “zcat”.

Заключительным этапом настройки веб-сервера является включение необходимого сайта (или сайтов), а также SSL при помощи директивы include:

include /etc/nginx/sites-enabled/*;
include /etc/nginx/ssl-enabled/*;

Настройки блоков server

NGINX использует блоки server для обслуживания на одном сервере сразу нескольких доменов.
Изначально NGINX имеет лишь один стандартный блок server, который используется для обслуживания документов из каталога /usr/share/nginx/html. Однако наиболее безопасно и правильно хранить настройки каждого Вашего сайта отдельно (в разных файлах).
Поэтому первым делом нам необходимо создать структуру каталогов. Для этого Вам необходимо создать новый каталог, и уже в нем создать файлы конфигурации сайтов:

$ sudo mkdir -p /var/www/primer.ru/html
$ sudo mkdir -p /var/www/primer2.ru/html

Следующая команда передаст права на них постоянному пользователю ($USER):

$ sudo chown -R $USER:$USER /var/www/primer.ru/html
$ sudo chown -R $USER:$USER /var/www/primer2.ru/html

Теперь перейдем к созданию страниц для сайтов:

$ nano /var/www/primer.ru/html/index.html
$ nano /var/www/primer2.ru/html/index.html

Мы рекомендуем Вам скопировать в созданные файлы пример страницы сайта, который Вы видите ниже:

<html>
<head>
<title>Добро пожаловать на primer.ru!</title>
</head>
<body>
<h1>Все отлично! Блок server сайта primer.ru работает корректно.</h1>
</body>
</html>

Следующим шагом будет создание блоков server. Для этого выполните следующую команду:

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/primer.ru

И затем откройте этот файл, используя root-права, и добавьте следующий текст:

server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}

Настройки, которые Вы здесь видите, имеют следующие функции:

  • listen - определяет IP-адрес и порт, а также может указывать путь для UNIX-сокета;
  • root - определяет, какой каталог будет использоваться для запросов;
  • index - задает, какие файлы будут использоваться в качестве индекса;
  • server_name - имя виртуального сервера;
  • location - задает конфигурацию в зависимости от URI-запроса. Этот параметр может быть задан как префиксной строкой, так и регулярным выражением. В данном случае try_files обозначает, что для обработки запроса будет использоваться первый найденный файл ($uri); обозначить каталог Вы можете при помощи косой черты ($uri/); если же ни один из данных файлов не будет найден, то идет перенаправление на последний параметр.

В данном файле Вам нужно отредактировать следующие настройки.
В root запишите путь к каталогу с Вашим сайтом:

root /var/www/primer.ru/html;

Также Вы меняете server_name, при этом нужно обязательно указать доменное имя своего сайта:

server_name primer.ru www.primer.ru;

Теперь мы можем перейти к запуску блока server, используя следующую команду:

$ sudo ln -s /etc/nginx/sites-available/primer.ru /etc/nginx/sites-enabled/

Для того, чтобы предотвратить конфликт нового блока с блоком по умолчанию (default), его необходимо отключить:

$ sudo rm /etc/nginx/sites-enabled/default

А затем раскомментировать строку (убрать спецсимвол) server_names_hash_bucket_size 64; в файле /etc/nginx/nginx.conf.

Далее давайте перейдем к настройкам проксирования. Размер буфера для проксируемых запросов должен быть не меньше, чем ожидаемый размер ответа от сервера:

proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

Следующим шагом необходимо установить кодировку отдачи:

charset utf-8;

Включите SSI и установите, чтобы SSI-переменные резервировали не более 1 Кбайта:

ssi on;
ssi_value_length 1024;

Наконец, нам необходимо перейти к блоку location, который отвечает за конфигурацию в зависимости от URI-запроса. Вы можете добавить не один, а несколько блоков location, к примеру, два:

server {
 location / {
 root /data/www;
 }

location /images/ {
 root /data;
 }
}

В данном случае первый блок location имеет путь для запросов (root) - конечный путь к запрашиваемому файлу будет формироваться путем добавления URI из запроса к пути из директивы root. При совпадении этого пути в нескольких блоках location будет выбран путь, имеющий самый длинный префикс (он задается косой чертой “/”).
Второй блок, который мы настроили, дает совпадение с запросами, начинающимися с /images/.
Также блок location используется при настройке прокси-сервера. Для этого в первом блоке нужно прописать параметры директивы proxy_pass, а именно протокол и адрес проксируемого сервера:

location / {
 proxy_pass http://localhost:8080;
 }

Вы можете использовать этот параметр для задания пути к веб-серверу Apache на порту 9999:

location / {
proxy_pass 127.0.0.1:9999;
}

При этом при использовании NGINX как прокси-сервера Вы можете задать множество разных параметров, к примеру, proxy_read_timeout, который определяет таймаут при чтении ответа прокси-сервера, или proxy_send_timeout, который определяет таймаут при передаче запроса.

Вы также можете настроить NGINX так, чтобы он перенаправлял запросы на FastCGI-серверы. Для этого вместо директивы proxy_pass Вам нужно использовать директиву fastcgi_pass, а также директиву fastcgi_param, в которой задается параметр, который затем будет передаваться FastCGI-серверу:

server {
 location / {
 fastcgi_pass localhost:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param QUERY_STRING $query_string;
 }

В этом случае файл SCRIPT_FILENAME определяет имя скрипта, а QUERY_STRING - параметры запроса.

Теперь, после того, как мы назначили все необходимые параметры, нам нужно перейти к завершающему шагу - перезагрузить сервер, чтобы все настройки, которые Вы изменили, вступили в силу:

$ sudo service nginx restart

Создание настроек для нескольких сайтов

После настройки основного сайта рекомендуем Вам составить список сайтов и определить, какой сайт должен открываться по IP-адресу сервера (если он один). Затем в директории /etc/nginx/sites-available создать файлы с сайтами, заполнить их настройками и сохранить их. Так как сервер учитывает только настройки из директории /etc/nginx/sites-enabled, то необходимо создать символическую ссылку на файл:

$ ln -s /etc/nginx/sites-available/имя_сайта
/etc/nginx/sites-enabled/имя_сайта

Это позволит Вам отключать сайт на время без удаления его конфигурационного файла. Проверить конфигурацию NGINXпосле работ можно командой:

$ sudo nginx -t

Если вывод содержит "syntax is ok" и "test is successful", то можно применить настройки, написав команду:

$ sudo service nginx reload

Команды для управления сервером NGINX

Рассмотрим основные команды, которые можно использовать для управления сервером NGINX.
Остановить веб-сервер NGINX:

$ sudo service nginx stop

Запустить NGINX после остановки:

$ sudo service nginx start

Перезапустить (остановить и запустить снова) одной строкой:

$ sudo service nginx restart

Автоматически перезапускать NGINX после перезагрузки сервера:

$ sudo update-rc.d nginx defaults

Если эта опция включена по умолчанию, Вы увидите примерно следующее сообщение в консоли:

System start/stop links for /etc/init.d/nginx already exist.

Мы надеемся, что информация в этой статье оказалась для Вас полезной и помогла справиться с установкой и настройкой веб-сервера NGINX. В следующей статье мы расскажем о том, как правильно установить и настроить веб-сервер Apache.
Если у Вас возникли вопросы, спрашивайте в комментариях, мы будем рады Вам помочь.

 

echo -e "Все про серверы, сети, хостинг и еще раз серверы" >/dev/pts/0

Комментарии

Sergey Eremin +38
27 мая в 2016
Здравствуйте! Было бы здорово, если напишите статью о настройке: NGINX + APACHE + mod_php/mod_python.
Свернуть ответы
Кристина Лихова +349
27 мая в 2016
Сергей, мы обязательно учтем ваше пожелание.
Сейчас рекомендуем вам прочитать недавно опубликованную статью, касающуюся установки и настройки веб-сервера Apache: https://timeweb.com/ru/community/articles/nastroyka-vds-na-ubuntu-14-04-chast-6-ustanovka-i-nastroyka-apache-1
Sergey Eremin +38
13 июня в 2016
Здравствуйте! Пробовал несколько раз установить на чистую ubuntu 14.04 из репозитория разработчика чётко по статье, после установки не работают команды nginx 1.11.1 и не открывается стартовая страница проверки по айпи, работает только проверка версии сервера. Возможно несоответствие версий? Кто сталкивался, подскажите, пожалуйста, как корректно установить.
Свернуть ответы
Андрей +69
14 июня в 2016
Посмотрел на своей VDS, все как написано сделал копированием и вставкой. Вроде нормально все, "Welcome to nginx!" открылось сразу (версия установилась nginx/1.11.1). Может, что то все же не так копировалось? И не включен ли случаем firewall (без правила что 80 порт пропускать)?
Sergey Eremin +38
14 июня в 2016
Дело в том, что при таком способе почему-то не добавляются правила utw для nginx. И как итог: firewall закрывает порт 80. Подскажите, пожалуйста, как их добавить. Не смог найти как это сделать.
Андрей +69
14 июня в 2016
По firewall ufw написано хорошо (с командами что нужны) в данной статье, также видел в цикле статей про 14-04 описание команд.
https://timeweb.com/ru/community/articles/kak-ustanovit-nginx-na-ubuntu-16-04-1
Кристина Лихова +349
14 июня в 2016
Сергей, здравствуйте!
Напишите, пожалуйста, какие действия вы конкретно выполняете и при помощи каких команд? Крайне важно понять порядок ваших действий, чтобы можно было дать максимально полезный ответ.
Sergey Eremin +38
14 июня в 2016
В админ-панели timeweb нажимаю переустановка системы. Далее делаю всё по статье №2 первичная настройка.
sudo wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo nano /etc/apt/sources.list
Добавляю в конце две строки:
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
Затем:
sudo apt-get update
sudo apt-get install nginx
Испробованы варианты с отключением ufw, файл с правилами ufw для nginx всё равно отсутствует или пустой.
Sergey Eremin +38
14 июня в 2016
Пробовал, но к сожалению для ubuntu 14 данная настройка и команды не работают.
Sergey Eremin +38
14 июня в 2016
Проблема тупиковая, для ubuntu 16 есть информация как настроить utw, а для 14-ой нет. Считаю, что раз на timeweb нет ubuntu 16.04 то помогла бы статья, а получается она неполная и нет решения для конкретной проблемы. Nginx 1.4 точно пользоваться никто не будет.
Свернуть ответы
Андрей +69
14 июня в 2016
Не знаю, почему у тебя не работает - интереса ради попробовал у себя абсолютно с нуля, благо собирался сервер новый ставить. Только ОС поставилась, ufw не активен был. Работает) А по настройке ufw для 14 ubuntu, нашел тут для себя инфу: https://timeweb.com/ru/community/articles/nastroyka-vds-na-ubuntu-14-04-chast-2-pervichnaya-nastroyka-os.
Sergey Eremin +38
14 июня в 2016
По этим статьям и настраиваю. И когда был на другом хостере, где была 16-я убунту, проблем не знал. А вот тут всё досканально по статьям делаю, переустанавливал ось уже раз 20, результат в связке ubuntu 14.04 и nginx 1.11.1 из репозитория разработчика, один - правила для ufw отсутствуют! И справедливости ради, во всех статьях здесь и digitalocean всегда указана настройка ufw, но не здесь.
Aлексей +99
14 июня в 2016
А просто команда sudo ufw allow 80 у вас работает?
Sergey Eremin +38
14 июня в 2016
Да, но насколько понимаю нужно открыть его только для nginx.
Aлексей +99
14 июня в 2016
А в чем проблема тогда? Установите uwf и откройте 80 порт (можете не для всех, а для себя только по ip - sudo ufw allow from 123.456.789 to port 80). зачем открывать порт только для Nginx?
Sergey Eremin +38
14 июня в 2016
Все эти статьи знаю наизусть уже в бесконечных мучениях подружить ubuntu 14.04 Nginx 1.11.1 и ufw. Во всех них нет команды ufw открытия http для nginx. А все команды из статей для для аналогичной настройки на ubuntu 16 не работают в данном случае.
Свернуть ответы
Андрей +69
14 июня в 2016
Поможем, если не паниковать. Во первых firewall по-умолчанию сам не включается. Если включили сами - выключите его наконец уже, нужно сначала с nginx разобраться. Второе - все настройки прописываются, только что проверил. Вывод команды netstat -lptun укажите вместе с sudo ufw status verbose. Без диагностики просто переустановками проблему не решить - что то делаете не так и это факт.
Sergey Eremin +38
14 июня в 2016
По статье номер 2 настроил и включил ufw, логично, что фаервол нужен. Когда настраивал убунту 16 и всё работало, в списке показаны были правила ufw открывающие трафик для него, которые добавлялись автоматически при установке nginx. Так и должно быть. Теперь того же пытаюсь добиться на убунту 14, раз 16-ю нет возможности установить. Не могу найти инфу как инициировать те же правила для nginx, только в таком сочетании версий.
Sergey Eremin +38
14 июня в 2016
22 ALLOW IN Anywhere
80 ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
Порт открыл командой sudo ufw allow 80. Но я пытаюсь сделать так, чтобы порт был открыт для nginx.
Андрей +69
14 июня в 2016
1. Сначала получаем список "приложений"
sudo ufw app list
У меня он следующий:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

2. Командой добавляем приложение:
sudo ufw allow 'Nginx Full'
Порты для работы данного приложения заработают.

3. Проверяем:
sudo ufw status verbose

У меня вышло так:
80,443/tcp (Nginx Full) ALLOW IN Anywhere
80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6)

Проверь, если не так будет(не поможет) - дальше посмотрим.
Sergey Eremin +38
14 июня в 2016
Список такой:
Available applications:
OpenSSH
sudo ufw allow 'Nginx Full'
ERROR: Could not find a profile matching 'Nginx Full'
Дело в том, что всё по статьям сделано. Возможно, что в данном случае лучше не включать ufw и установить nginx и тогда добавятся эти правила? В иных версиях все списки были как у вас, а ufw включался перед установкой nginx.
Андрей +69
14 июня в 2016
После установок не перезагружал сервер кстати? У меня ufw ругался чего то, я его если что перезагружал. Так да, рекомендую попробовать поставить сначала nginx, а потом активировать ufw.
Sergey Eremin +38
14 июня в 2016
Перезагружал. При многочисленных переустановках системы и перезагрузке сервера выдаёт один и тот же результат, я уже и не знаю, что думать. Попробую установить с отключенным ufw.
Андрей +69
14 июня в 2016
Добавлю, что nginx ставлю full пакетом( sudo apt-get install nginx-full). Файл для ufw создается установщиком следующий: cat /etc/ufw/applications.d/nginx. Если его нет, ufw не будет выводить права.
В файле следующие строки:

[Nginx HTTP]
title=Web Server (Nginx, HTTP)
description=Small, but very powerful and efficient web server
ports=80/tcp

[Nginx HTTPS]
title=Web Server (Nginx, HTTPS)
description=Small, but very powerful and efficient web server
ports=443/tcp

[Nginx Full]
title=Web Server (Nginx, HTTP + HTTPS)
description=Small, but very powerful and efficient web server
ports=80,443/tcp

Если файла нет - советую вручную добавить с данным текстом и после перезагрузки проверить все ли в sudo ufw app list выводит.
Sergey Eremin +38
14 июня в 2016
Попробовал с отключенным ufw, та же история. Файл в котором должны быть правила пуст. Не знаю, что и думать. В ручную добавить записи в файл... Остаётся только догадываться чего ещё не установилось. Это ненормально.
Андрей +69
14 июня в 2016
если использовать установку с репозитория разработчиков, то ставить придется данный файл вручную, так как установщику такие команды не заданы. Так, если ошибок установщик не выводил - установилось все. Добавь файл и все заработает.
Или командой: sudo ufw allow http для открытия порта. Так как что application, что просто открытие порта - они по факту равнозначны, ufw не может только 1 программе все дать а другим нет. Плюс открывать порт 80 при запущенном nginx никто не сможет как факт.
Sergey Eremin +38
14 июня в 2016
Благодарю за помощь, так и сделаю.
Sergey Eremin +38
15 июня в 2016
Скажите, пожалуйста, порт 22 нужно закрыть? Добавил правила как вы описывали ниже, при проверке они есть, но также в них имеется порт 22, но по идее он должен быть отключен?
Андрей +69
15 июня в 2016
Если закрыть 22 порт, то по SSH не подключиться, только из панели управления. Лучше поставить fail2ban и авторизацию по ключу - вполне безопасное решение: не переберут пароль просто так и пароль светиться не будет.
Sergey Eremin +38
15 июня в 2016
Просто интересный момент команда: sudo ufw status выводила:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
И всё работало, включая доступ ssh, а сейчас выдаёт:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6)
Андрей +69
15 июня в 2016
В этом случае все в порядке, OpenSSH это SSH сервер и порт по-умолчанию 22. Просто не обозначен напрямую, что это openssh и все.

Эти строки из вывода команды говорят, что 22 порт открыт как по IPv4, так и по IPv6(вторая запись) для всех IP адресов:

22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
Sergey Eremin +38
18 июня в 2016
Здравствуйте! Более того, оказывается при установки из репозитория разработчика не создаются директории и конфиги для настройки хоста. Сплошные грабли, а всё потому, что хостер не думает о нуждах клиента и не обновляет программное обеспечение. Всё должно настраиваться стандартно, а на деле это получилось только у другого хостера. Выходит вообще нет никаких конфигов при такой установке и что делать в таком случае?
Sergey Eremin +38
19 июня в 2016
Нашёл решение на официальном сайте, установка из репозитория PPA, проверил, все конфиги подгружаются и правила для ufw. https://www.nginx.com/resources/wiki/start/topics/tutorials/install/#ubuntu-ppa
PS Timeweb, добавьте, пожалуйста наконец ubuntu 16 в установки на VDS!
Свернуть ответы
Кристина Лихова +349
20 июня в 2016
Сергей, мы внимательно следим за пожеланиями и потребностями наших клиентов. Мы планируем сделать версию Ubuntu 16 доступной в ближайшем квартале. Спасибо за Ваше предложение по развитию сервисов Timeweb.
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте