Файл nginx conf. Nginx: настройка и установка

Итак, сеть поднята и свитч бодренько моргает диодами. Самое время для настройки нашего маленького, но гордого сервера, работающего под управлением Ubuntu Server 10.04 LTS. Используя образ диска (его можно по HTTP или через torrent, - 700Mb.) записываем его на болванку. Для этих целей рекомендую использовать «Daemon Tools Lite» или « » так как обе эти программы - бесплатные и полностью удовлетворяет нашим требованиям.

Выставляем в bios-е загрузку с CD или DVD и перезагружаемся.

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

Подсказка : Обратите внимание на строку в самом низу экрана. В ней перечислены функциональные клавиши, с помощью которых осуществляется навигация по меню, выбор опций, доступ к справке и т.д. Это - особенность nix систем.

Мы попадаем в меню загрузки диска. Выбираем пункт «Установить Ubuntu Server».



У нас спросят, где мы будем использовать наш сервер, это повлияет на выбор зеркал обновления (репозиториев). Так как Интернет-провайдеры обычно предоставляют доступ в IX (UA-IX, MSK-IX и похожим сегментам) на более высоких скоростях, выберем наше местоположение. Так как я живу на Украине, я и выбрал «Украина».





В списке стран выберем «Россия»:



После этого начнется поиск сетевых устройств для дополнительных возможностей установки.



Итак, после тщательных поисков, нашлись две (в среде Linux они обозначаются как eth0 и eth1 - ethernet). Нам нужно выбрать ту, которая подключена к Интернету (роутеру или модему в нашей локальной сети).



Если на роутере был настроен DHCP (Dynamic Host Configuration Protocol - протокол автоматического назначения IP адресов ), сетевая карта получит соответствующие настройки автоматически. В моем случае DHCP сервер был не настроен, о чем программа установки нам и сообщила. Не беда, ведь можно позже настроить все руками, согласимся со сбоем и продолжим установку.



Вот нам и предложили ввести настройки подключения вручную или попробовать еще раз, пропустить настройку сети или вернуться и выбрать другую сетевую карту. Выберем «настроить сеть вручную».



  • IP: 172.30.2.3
  • Netmask: 255.255.255.0
  • Gateway: 172.30.2.1
  • DNS: 172.30.2.1

После настройки, у нас поинтересуются, как же будет называться наш новоиспеченный сервер? Я назвал его «CoolServ ». В названии должны быть только латинские буквы, цифры, тире или подчеркивание, иначе могут возникнуть непредвиденные неприятности.

Вообще, лучше следовать трем правилам именования переменных в языках программирования, а именно: имя не должно начинаться цифрой, в имени не должно быть пробелов, нельзя использовать зарезервированные слова (специальные конструкции, например if, else, for, goto и т.п.) Есть и четвертое, - не использовать символы национальных алфавитов кроме латинского, например: Русский, Японский, Украинский и т.д. Если придерживаться этого правила, у Вас никогда не будет проблем с работой программ и отображением имен файлов.



ОС определила, что мы находимся во временной зоне Европа/Запорожье, те GMT+2, все так и есть. Для Вас, соответственно, будет свой часовой пояс, если Вы не живете на Украине.



Настало самое «страшное» при любой инсталляции ОС - разметка для ее установки. Но дружелюбная ОС (именно так переводится слово «ubuntu» с языка какого-то племени банановой республики) поможет нам все сделать быстро и качественно. У нас есть два варианта разметки: автоматическая или вручную. Так как мы не ищем легких путей, - выбираем ручную разметку.



На фото ниже отображены подключенные диски. В нашем случае, это - один диск SDA на 8 гигабайт под именем (WD, Seagate и т.п. В моем случае это - виртуальный диск Virtual Box-a). Выбираем его.

Примечание : В *NIX подобных ОС диски не имеют привычных для Windows имен, вроде «C» или «D». Вместо этого они именуются как HDA (для IDE канала) или SDA (в случае SATA или SCSI дисков).

Последняя буква в названии (А) обозначает диск в алфавитном порядке. Т.е. - следующий SATA диск будет именоваться SDB, SDC и так далее. Но это только именование физических дисков, а логические их разделы будут иметь вид SDA1, SDA2, SDA5 и т.д. Причем, цифры от 1 до 4 означают первичный раздел, от 5 и выше - логический. Пусть Вас не смущает такое странное наименование, со временем, я надеюсь, оно станет таким же легким и привычным, как и в среде MS Windows.



Грозная надпись на скриншоте ниже сообщает о том, что все что было на диске может быть утеряно при переразметке, но мы ничего не боимся и жмем «Да».



После этого будет создана таблица разделов, которую нужно «заполнить» самими разделами. Выбираем свободное место и жмем далее (клавишу «Пробел»).



На следующем скриншоте выбираем «Создать новый раздел», хотя все еще можно сделать автоматически, мы упорно будем настраивать вручную:)



Вводим размер нового диска в MB или GB, для начала создадим своп (аналог файла подкачки в MS Windows), размером в 512 мегабайт. Хотя, рекомендуется делать своп размером в полтора раза больше размера общего количества установленной , мы сделаем его равным этому значению.

Примечание : операционные системы *NIX (Unix и Linux) более правильно использует файл подкачки (особенно - в версиях без графического интерфейса), здесь своп будет загружен крайне редко. Например, на моем сервере из 1Gb свопа максимально использовалось несколько мегабайт и то, из-за реально большой нагрузки и времени бесперебойной работы около месяца. В любом случае, больше гигабайта нет смысла делать, так как просто потеряете место, которого всегда не хватает.



Выбираем тип раздела. Я выбрал первичный (т.е., полное имя данного раздела будет - SDA1)



На следующем скриншоте нам нужно будет явно указать что это будет именно своп-раздел. Для этого в настройках раздела выберем опцию «раздел подкачки», поставим метку «загрузочный» и закончим настройку раздела.



Теперь опять выбираем свободную область, создать диск, но сейчас выберем тип «логический». Размер поставим 15 GB, тип файловой системы: EXT4, точка монтирования: / (корень) и на этом закончим с этим разделом.



На все оставшееся место создаем логический раздел с файловой системой EXT4 и точкой монтирования /home , это будет домашний каталог всех пользователей (аналог каталога в MS Windows “Documents and Settings”). На этом закончим настройку дисков. В итоге у Вас должно получиться примерно следующее.



Если все правильно, то выбираем «Да» (как показано на скриншоте ниже). Это - последний момент перед записью таблицы разделов на диск (пока все проделанные нами настройки записывались исключительно в оперативную память ПК). Ну, понеслась!



После записи таблицы начнется установка самой ОС Ubuntu Server 10.04 LTS, это займет минут 5-7.



После окончания процесса, нам предложат ввести имя будущего пользователя. Я введу свое имя. Оно будет использоваться для отправки почты от имени этого пользователя.



После ввода имени, нам нужно придумать имя учетной записи, те пользователя, под которым мы будем входить в систему. Я использовал asus (это - не реклама:))





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

Примечание : при шифровании есть риск того, что в случае неполадок с винчестером, будет проблематично восстановить зашифрованную информацию.



Нам предлагают ввести информацию о прокси-сервере для получения доступа к Интернету. Так как его у нас пока нет, то просто оставим поле пустым. Выбираем «Продолжить».



В отличие от денег-просящей MS Windows, Ubuntu предлагает совершенно бесплатно и своевременно обновляться через Интернет. Выберем пункт «устанавливать обновления безопасности автоматически», чтобы не делать этого потом вручную.



Также, нам сразу предложат установить парочку «демонов» (аналоги системных служб в Windows). Да, это - «страшная» ОС, здесь могут быть даже «зомби» - зависшие «демоны», и отсутствуют иконки:) Для удобства конфигурирования выберем Open SSH server (чтобы можно было по необходимости подключатся к серверу удаленно по сети с использованием терминала).

Наконец-то! Ubuntu Server 10.04 LTS установлен и можно проверить плоды своих трудов! Пробуем войти в систему, используя логин и пароль указанные при установке.



После успешного ввода логина и пароля, ОС поприветствует нас краткой информацией о своем состоянии. У Вас это будет выглядеть приблизительно так:



Из информации на скриншоте выше видно:

  • Система загружена на 0.4%,
  • В домашнем каталоге использовано 3.3% места из 1009 Mb.
  • Используется 3% ОЗУ из 512 Mb, что в переводе на мегабайты составляет всего 21 Mb. Для сравнения MS Windows XP Pro SP3 после «чистой» установки (с оригинального диска) использует около 100Mb и уже в файле подкачки изначально «держит» мегабайт 30.
  • Сейчас запущено 84 процесса, вошедших пользователей нет (потому что информация была взята до того как пользователь, т.е. - мы, вошли в систему).
  • Одной сетевой карте под именем eth0 присвоен IP адрес 172.30.2.3
  • Также доступно 89 пакетов для обновления и 67 пакетов обновления безопасности.

После установки необходимо обновить ОС, для этого потребуется около 70 мегабайт скачать из Интернета. Запускаем команду обновления от имени root-a (администратора) sudo apt-get update , которая обновит список доступных пакетов.

Так как команда требует прав супер пользователя «su» (super user), у нас спросят наш пароль, введем его. Введенная следом команда apt-get upgrade запустит сам процесс обновления пакетов. После запуска будет проверен список пакетов и предложены обновления, подтвердим установку нажав клавишу «Y».



Команда «get update» обновляет список доступного ПО, те только информацию о нем (версия и т.п.), а «upgrade» - производит непосредственно обновление программного обеспечения (скачивает с сайта разработчика новую версию и устанавливает ее).

Рассмотрим ту же самую процедуру обновления с использованием команды sudo



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

Теперь ваш сервер готов к работе! Но его еще нужно настроить (сконфигурировать). Этим мы и займемся в следующей статье.

Сегодня расскажу как установить ubuntu server 14.04.1 LTS и настроить к нему удаленный доступ. Думаю никто со мной не поспорит, что Ubuntu является самым широко распространенным дистрибутивом ubuntu, созданным для людей (а не для бородатых админов). Стоит отметить, что ubuntu развивается и с каждым годом становится все лучше. Именно поэтому этот дистрибутив выбирают как для домашнего использования на обычных компьютерах, так и для использования на серверах крупных компаний.

Сам я начал знакомство с ubuntu еще с версии 7.10. Когда я начал разбираться со всеми тонкостями linux операционной системы, я открыл для себя новый мир с широкими возможностями. Глубоко уверен, что как только на маркетинг linux операционных систем будут тратить больше денег, тогда они стремительнее начнут входить в дома обычных пользователей.

Уже давно прошли те времена, когда установка операционной системы linux сопровождалась работой в терминале и чтением мануалов. Уже сегодня установка ubuntu проходит не сложнее чем установка windows 7, а после установки ей можно пользоваться полноценно, без установки дополнительного софта и драйверов.

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

Скачиваем ubuntu server 14.04.1 LTS

Приставка LTS в названии, говорит о длительной поддержке дистрибутива. Описываемый мной дистрибутив будет поддерживаться сообществом до апреля 2019 года, что будет сопровождаться выходом обновлений и исправлений устраняющих баги и дыры.

Чтобы вам долго не искать, скачать образ диска вы можете по кнопке:

Установку ubuntu server я буду проводить на виртуальной машине, вы можете повторить мой опыт, либо сразу установить на физический компьютер. Установка на виртуальную машину и на физический компьютер – идентична.

Установка ubuntu server 14.04.1 LTS

Для установки ubuntu server я подготовил со следующими параметрами:

  • ОЗУ : 256 Mb
  • Процессор : 1 ядро 64 bit
  • Винчестер : sata 10 Gb
  • Память видео : 12 Mb
  • Сетевые адаптеры : 1 – смотрит в мир. 2 – смотрит в сеть

Выбор таких характеристик обусловлен низкими требованиями ресурсов операционной системы.

После подключения образа диска к виртуальной машине, запускаем её и если все нормально, вы должны увидеть окно выбора языка установки
Выбираем Русский язык и жмем “Enter”. В открывшемся списке выбираем “Установить Ubuntu Server”
В следующем окне выбираем свое местонахождение. Я выбираю “Российская Федерация”
После, установщик предложит настроить клавиатуру или выбрать из списка. Жмем “Нет” для выбора из списка
Выбираем страну для которой предназначена клавиатура
Выбираем расскладку. Я выбрал просто “Русская”
В следующем окне вам будет предложено настроить переключение раскладок. Выбирайте на свое усмотрение, я выбрал Alt+Shift так как уже привык именно к этой комбинации
Теперь ждем минуту пока загрузятся дополнительные компоненты. После загрузки компонентов у вас появиться окно выбора основного сетевого интерфейса. Я выберу eth0 основным, именно эта сетевая карта будет смотреть в мир и через неё будет подключение к интернету сервера
В следующем окне будет предложено выбрать имя компьютера. Я свой сервер назвал “srv-01”
дальше вам нужно ввести имя пользователя. Не путайте с логином, именно имя. Я ввел Ivan Malyshev
а вот в следующем окне, укажите имя пользователя (логин) с помощью которого будет осуществляться вход в систему. Я указал srvadmin
после ввода логина, придумайте и укажите пароль (желательно использовать пароль содержащий строчные и прописные буквы, а также цифры и символы). После ввода пароля, в следующем окне его нужно будет повторить, для избежания ошибок
Дальше будет предложено зашифровать домашний каталог. Я не буду хранить в нем ничего криминального или секретного, так что шифровать не буду
Далее нужно выбрать “часовую зону”. Так как виртуальная машина получает интернет через eth0, установщик сам определил где я нахожусь, я нажму “Да”, так как он правильно выбрал. Если у вас этого не произошло или была неправильно выбрана часовая зона, выбирайте вручную
Дальше нужно выбрать куда будет установлена система. Многих этот этап вводит в ступор, но не нужно бояться, все просто!
Так как я устанавливаю ubuntu server в целях обучения, я выберу второй пункт “Авто использовать весь диск”, но если вы устанавливаете систему на реальный жесткий диск, советую устанавливать каталоги /usr, /var, /home на разные логические диски
Выбираем диск (так он у меня один, выбор небольшой), у вас может быть несколько, в том случае если к компьютеру подключено несколько жестких дисков. В следующем окне нужно согласиться на предупреждение о записи информации о разделах, жмем “Да”
далее подтверждаем использование всего диска
В следующем окне установщик покажет как он разобьет диск, соглашаемся выбрав “Закончить разметку и записать изменения на диск”
В следующем окне еще раз подтверждаем свои действия (чем то windows напоминает, не правда?)
И теперь ждем пока будет закончена установка Ubuntu Server 14.04.1 LTS.

Если во время установки к сети виртуальной машины был подключен интернет, система попытается установить обновления, но перед этим спросит есть ли у вас прокси, если у вас нет прокси, а интернет идет напрямую, жмите “Продолжить”
На вопрос об установке регулярных обновлений, я выбрал “Без автоматического обновления”. Не люблю когда ставиться что то без моего ведома. Все что нужно будет, можно будет обновить вручную
В окне “выбора програмного обеспечения” я установил галку только на “OpenSSH Server” именно через него мы и будет получать удаленный доступ к серверу. Все остальное будем ставить позже, вручную
В самом конце установки сервера, вам нужно согласиться с установкой загрузчика в главную загрузочную запись
После установки загрузчика вы увидите сообщение об успешной установке системы
Жмем “Продолжить” и ждем пока перезагрузится машина. После первой загрузки, вы должны увидеть предложение ввода логина, вводим логин указанный при установке, после вводим пароль
Если вы ввели правильные логин и пароль вы попадете в систему и увидите такой экран
На этом установку ubuntu server 14.04.1 LTS можно считать завершенной.

Первоначальная настройка ubuntu server 14.04.1 LTS

В первую очередь активируем учетную запись root. По умолчанию она отключена. Для активации пишем в консоли

Sudo passwd root

Сначала вводим пароль текущего пользователя, а потом два раза новый пароль для root. Если все сделали правильно увидите следующую картину
Теперь проверяем. Введите в терминале:

* Эта команда осуществит вход пользователя root в систему

на просьбу ввести пароль, вводим пароль который вы ввели для root. Если все сделали правильно, приглашение консоли смениться с srvadmin@srv-01:$ _ на root@srv-01:~# _

Nano /etc/network/interfaces

откроется файл interfaces в текстовом редакторе nano. По умолчанию этот файл имеет такой вид
вносим в этот файл такие строки:

Auto eth0 iface eth0 inet static address 10.10.60.45 netmask 255.255.255.0 gateway 10.10.60.1 auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0

Тем самым мы подключаем автоматически оба интерфейса, со статическим адресом, масками и шлюзом для первой карты. В терминале это должно выглядеть так:
После внесения данных жмем Ctrl+O (Сохранить), а затем Ctrl+X (Закрыть).

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

(ifdown eth0; ifup eth0)& (ifdown eth1; ifup eth1)&

Теперь проверяем что у нас выводит ifconfig . У меня вывод выглядит так, у вас должно быть так же
Отлично! давайте пропингуем ya.ru, введите в терминале

Ping ya.ru

Если видите обмен с пакетами, значит все отлично! У вас есть интернет!

В моем случае не все пошло так как хотелось. При пинге яндекса я получил такой вот ответ

ping: unknown host ya.ru

хотя ip адрес 8.8.8.8 (DNS Google) пингуется. Следовательно проблема с DNS на нашем сервере, а именно он не может обрабатывать имена.

Решение проблемы нашел добавлением адреса DNS гугла в файл /etc/resolvconf/resolv.conf.d/tail .

Открываем файл sudo nano /etc/resolvconf/resolv.conf.d/tail и вписываем туда строку

Nameserver 8.8.8.8

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

Удаленное подключение к ubuntu server 14.04.1 LTS

Для удаленного подключения к серверу будем использовать программу PuTTY. Это самый удобный инструмент для удаленной работы в консоле сервера. Скачать его можно по кнопке:

Программа после скачивания не требует установки. После запуска программы вы увидите такое окно
Все что вам нужно сделать: ввести ip адрес сервера, указать порт, ввести имя подключения и выбрать кодировку (показано на скриншотах)

Для того чтобы не пришлось каждый раз вводить эти данные, нажмите “Save” и при следующем подключении просто выбирайте имя подключения из списка.

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

Вот на этом я думаю можно закончить статью, думаю после прочтения и вы сможете установить ubuntu server 14.04.1 LTS. Как видите ничего сложного нет. Если у вас во время чтения статьи возникли вопросы или предложения, добро пожаловать в комментарии. Так же хочу обратить внимание что управление сервером можно осуществлять .

Первое знакомство с любой новой системой начинается с ее установки. Несмотря на то, что эта тема довольно избита и не писал об этом только ленивый, без описания процесса установки наш цикл для начинающих будет неполным. Мы постараемся не только рассказать, как поставить систему, но и почему мы выбираем те или иные настройки и на что они влияют. Также мы будем рассматривать установку именно серверной версии Ubuntu, так как наш цикл предназначается именно начинающим администраторам, чтобы они могли устранить пробелы в знаниях и осознанно подойти к восприятию остальных наших материалов.

Так как основной системой для наших решений является Ubuntu Server, то ставить мы будем именно ее. Свежий релиз всегда можно получить со страницы: http://www.ubuntu.com/download/server . Мы настоятельно рекомендуем использовать только LTS-версии, как наиболее стабильные и имеющие продолжительный срок поддержки. Обычные версии, как правило, являются полигоном для обкатки новых технологий и могут работать нестабильно, не говоря уже о том, что срок поддержки в 9 месяцев абсолютно неприемлем для работающих серверных систем.

Первое что вы увидите, загрузившись с установочного носителя - это меню выбора языка:

От его выбора зависит не только то, на каком языке с вами будет общаться инсталлятор и система, но и какие локали будут сгенерированы. Набор локалей влияет не только на то, каким образом будут отображаться символы национальных алфавитов, но и на работу некоторых программ и служб, которые критичны к региональным установкам, например, Сервера 1С.

После чего система, уже на выбранном вами языке, предложит перейти к установке и указать страну, которую она предлагает, основываясь на выбранном языке.

От автоматического определения раскладки следует отказаться:

И выбрать необходимую раскладку из списка, в большинстве случаев достаточно согласиться с выбором системы:

Затем следует указать комбинацию клавиш для ее переключения. Мы категорически не рекомендуем, если только это не ваша личная система, указывать что-либо иное, нежели принятое по умолчанию Alt+Shift . Потому как крайне неприятно, оказавшись в незнакомой системе, угадывать, какую именно комбинацию выбрал устанавливавший ее администратор.

Следующим шагом система попробует получить сетевые настройки, так как в большинстве сетей присутствует DHCP сервер, то уже на этом этапе система сконфигурирует сеть и получит доступ в интернет.

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

После этого потребуется указать имя системы и имя пользователя. Следует помнить, что в Ubuntu учетная запись root отключена и созданный на этом этапе пользователь получает полномочия повышать свои права до суперпользователя при помощи команды sudo . Подробнее смотрите в нашей статье: . Также не забывайте, что Linuх - регистрозависимая система, поэтому правилом хорошего тона будет использование, в том числе и в именах пользователей, только нижнего регистра.

От предложения зашифровать домашний каталог также следует отказаться.

Затем укажите текущий часовой пояс. К этой настройке следует подходить ответственно, так как неверно выставленная временная зона может приводить к некорректной работе ряда служб или привести к появлению недостоверной информации в приложениях, например, в календаре или планировщике задач, особенно если данные используются пользователями находящимися в других временных зонах. При этом важно выбрать именно свою временную зону, а не соответствующую ей по смещению от GMT. Это нужно для того, чтобы в случае изменения часовых поясов в вашей стране система правильно применила обновления.

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

После настройки времени мы переходим к наиболее ответственному этапу - настройке диска. Система предлагает несколько вариантов, среди которых автоматическая разметка. В большинстве случаев мы выбираем именно этот пункт. Если говорить о единственном диске, то мы не видим смысла разбивать его на разделы, за исключением настольных систем, где на отдельный раздел стоит вынести /home .

В нагруженных системах имеет смысл выносить разделы с данными, например, /var/www или /opt/zimbra , на отдельные дисковые массивы. Если вы хотите установить систему на программный RAID, то обратитесь к статье: . В остальных случаях смело выбирайте автоматическую разметку без LVM, в этом случае на диске будет создан раздел подкачки (swap ) размером в единицы ГБ и корневой раздел на остальном пространстве.

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

Установив основу системы, инсталлятор предложит вам выбрать наборы ПО для установки. Можно выбрать на этом этапе необходимые роли и получить готовую к настройке систему. Разве это плохо, особенно для начинающего администратора? Плохо! И вот почему: при таком подходе система остается для администратора "черным ящиком", нет представления о назначении отдельных пакетов, их роли и влиянии на систему в целом. Поэтому мы рекомендуем отказаться от предлагаемых вариантов и устанавливать требуемые пакеты вручную. Это поможет вам глубже понять систему и взаимодействие между ее компонентами. А когда вы станете чувствовать себя в среде Linux как рыба в воде, вы сами решите нужно ли вам устанавливать софт автоматически.

Поэтому не выбираем ничего и (нажав Tab ) переходим к пункту Продолжить .

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

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

После чего вам будет предложено перезагрузить систему, установка на этом будет закончена и в вашем распоряжении окажется полноценная серверная операционная система.

Итак, первый вход в систему, мы бы не стали об этом писать, если бы не читательский отклик, который показал, что на этом моменте у многих возникали затруднения. Так вот, в Linux-системах процесс ввода пароля никак визуально не отображается, вам просто нужно набрать нужную комбинацию символов и нажать Enter , хотя внешне система ведет себя так, как будто ничего не происходит. Такое поведение унаследовано от UNIX-систем и преследует цели безопасности, чтобы злоумышленник не мог узнать длину вашего пароля.

После того, как вы вошли в систему, в первую очередь стоит настроить сеть. Как помните, мы не производили никаких настроек на стадии установки, поэтому возможности установить дополнительные пакеты у нас нет и следует выходить из положения тем, что есть в наличии. По умолчании в системе имеется текстовый редактор nano , он не столь удобен, как встроенный редактор mc , но нужно уметь им пользоваться, как раз на случай таких ситуаций.

Прежде всего повысим свои права до суперпользователя:

И откроем редактором конфигурационный файл с настройками сети:

Nano /etc/network/interfaces

И приведем его содержимое к следующему виду:

Auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.44.62
netmask 255.255.255.0
gateway 192.168.44.2
dns-nameservers 192.168.44.2 8.8.8.8

Первая секция auto lo задает настройки для петлевого интерфейса и уже присутствует в файле. Вторая секция задает настройки внешнего сетевого интерфейса eth0 для работы со статическим адресом. Опции понятны и отдельных разъяснений не требуют, адреса, естественно, взяты исключительно для примера. Если в вашем сервере несколько сетевых адаптеров, то следует прописать секцию для каждого из них.

Допустим мы хотим получать настройки второго сетевого адаптера eth1 по DHCP, для этого добавим секцию:

Auto eth1
allow-hotplug eth1
iface eth1 inet dhcp

Немного остановимся на опциях auto и auto-hotplug . Первая указывает инициировать подключение при загрузке, а вторая запускает механизм отслеживания горячего переподключения и инициировать получение адреса при наступлении данного события.

Закончив редактировать файл следует выйти из редактора по Ctrl + X , утвердительно (Y ) ответив на предложение записать файл.

После чего перезагрузите компьютер:

Если все сделано правильно, то система получит доступ к сети и интернет. Проверить это можно командой ping:

Ping ya.ru

Прервать выполнение команды следует комбинацией Ctrl + С , запомните эту комбинацию, она еще не раз вам пригодится.

Просмотреть настройки сетевых интерфейсов можно командой

Ifconfig

Этой же командой можно выяснить, какие именно сетевые карты видит система и под какими именами, для этого воспользуйтесь параметром HWaddr , который представляет MAC-адрес сетевой платы.

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

Apt-get update

Затем обновим систему командой:

Apt-get upgrade

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

Apt-get install linux-generic

Которая установит новое ядро и пакеты зависимостей к нему. После обновления систему также рекомендуется перезагрузить.

После перезагрузки установим инструменты администрирования: пакет ssh для удаленного доступа к серверу и файловый менеджер mc , который значительно упрощает работу с системой.

Apt-get install ssh mc

Для запуска mc используйте простую команду:

если хотите запустить его с правами суперпользователя.

Работа с ним довольно проста, те кто работал в DOS с менеджерами Norton Commander или Volkov Commander вообще не должны испытывать затруднений.

Навигация осуществляется стрелками, переход между панелями клавишей Tab , а выделение клавишей Insert . Основные действия указаны внизу, цифры рядом с ними обозначают номер функциональной клавиши, отвечающей за это действие, так, например, F4 - Правка, F8 - Удаление, F10 - Выход. Вы всегда можете свернуть, а затем развернуть, mc сочетанием клавиш Ctrl + O и получить доступ к консоли.

В открывшемся окне стрелками перейдите на опцию Встроенный редактор и выберите ее при помощи клавиши Пробел . Для подтверждения настроек и выхода нажмите Далее .

Это позволит сразу использовать для редактирования конфигурационных файлов более удобный чем nano встроенный редактор.

В заключение проверим возможность удаленного подключения, для этого будем использовать популярную утилиту PuTTY (скачать). В последней версии просто достаточно указать IP-адрес или доменное имя сервера:

Однако, на всякий случай, проверьте в Window - Translation

Nginx – это популярный и производительный веб-сервер и обратный прокси-сервер.

У Nginx много преимуществ, однако его настройки достаточно сложные и не всегда понятны новичкам. Данное руководство поможет разобраться с основными параметрами, синтаксисом и конфигурационными файлами Nginx.

Примечание : Руководство выполнено на Ubuntu 12.04.

Иерархия каталогов Nginx

Nginx хранит конфигурационные файлы в каталоге /etc/nginx.

В этом каталоге находится ещё несколько каталогов и модульных конфигурационных файлов.

cd /etc/nginx
ls -F

conf.d/ koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/ win-utf
koi-utf naxsi_core.rules proxy_params sites-enabled/

Пользователи Apache уже знакомы с каталогами sites-available и sites-enabled. Эти каталоги определяют конфигурации сайтов. Файлы обычно создаются и хранятся в sites-available; в sites-enabled хранятся только конфигурации включенных сайтов. Для этого нужно создать символическую ссылку из sites-available в sites-enabled.

Каталог conf.d тоже можно использовать для хранения конфигураций. Каждый файл с расширением.conf будет читаться при запуске Nginx. Синтаксис таких файлов не должен содержать ошибок.

Почти все оставшиеся файлы хранятся в /etc/nginx, который содержит сведения о конфигурации конкретных процессов или дополнительных компонентов.

Главным конфигурационным файлом Nginx является nginx.conf.

Файл nginx.conf

Файл nginx.conf читает соответствующие конфигурационные файлы и объединяет их в единый файл конфигурации при запуске сервера.

Откройте файл:

sudo nano /etc/nginx/nginx.conf

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
. . .

Первые строки задают общие сведения о Nginx. Строка user www-data указывает пользователя, с помощью которого запускается сервер.

Директива pid указывает, где будут храниться PID процессов для внутреннего использования. Строка worker_processes определяет количество процессов, которое может одновременно поддерживать Nginx.

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

За общими сведениями о сервере следует раздел events. Он управляет обработкой соединений Nginx. За ним идёт блок http. Прежде чем продолжить ознакомление с конфигурациями веб-сервера, нужно понять, как отформатирован конфигурационный файл Nginx.

Структура конфигурационного файла Nginx

Конфигурационный файл Nginx делится на блоки.

Первый блок – events, за ним идёт http и начинается главная иерархия конфигураций.

Детали конфигурации блока http делятся на уровни при помощи закрытых блоков, которые наследуют свойства из блока, в котором они расположены. В блоке http хранится большая часть общих конфигураций Nginx, которые делятся на блоки server, которые, в свою очередь, делятся на блоки location.

Во время настройки Nginx важно помнить следующее правило: чем выше уровень конфигурации, тем больше блоков наследует эту конфигурацию; чем ниже уровень конфигурации, тем она «индивидуальнее». То есть, если параметр Х должен применяться в каждом блоке server, то такой параметр нужно поместить в блок http.

Если вы внимательно рассмотрите файл, вы заметите, что он содержит много опций, которые определяют поведение программы как единого целого.

Например, чтобы настроить сжатие файлов, нужно установить такие параметры:

gzip on;
gzip_disable "msie6";

Это включит поддержку gzip для сжатия отправляемых клиенту данных и отключит gzip для Internet Explorer 6 (поскольку этот браузер не поддерживает сжатия данных).

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

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

Блок http в файле nginx.conf заканчивается так:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Это говорит о том, что блоки server и location, которые определяют настройки конкретных сайтов и URL-адресов, будут храниться за пределами этого файла.

Это позволяет поддерживать модульную архитектуру конфигураций, в которой можно создавать новые файлы для обслуживания новых сайтов. Также это позволяет группировать похожие файлы.

Закройте файл nginx.conf. Теперь нужно изучить настройки отдельных сайтов.

Виртуальные блоки Nginx

Блоки server в Nginx являются аналогом виртуальных хостов Apache (но для удобства их тоже принято называть виртуальными хостами). По сути, блоки server – это технические характеристики отдельных веб-сайтов, размещённых на одном сервере.

В каталоге sites-available можно найти файл блока server по умолчанию, который поставляется вместе с сервером. Этот файл содержит все необходимые данные для обслуживания сайта.

cd sites-available
sudo nano default

root /usr/share/nginx/www;
index index.html index.htm;
server_name localhost;
location / {

}
location /doc/ {

alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;

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

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

server {
. . .
}

Этот блок размещён в файле nginx.conf ближе к концу блока http с помощью директивы include.

Директива root определяет каталог, в котором будет храниться контент сайта. В этом каталоге Nginx будет искать запрашиваемые пользователем файлы. По умолчанию это каталог /usr/share/nginx/www.

Обратите внимание: все строки заканчиваются точкой с запятой. Так Nginx отделяет одну директиву от другой. Если точки с запятой не будет, Nginx прочитает две директивы (или несколько директив) как одну директиву с дополнительными аргументами.

Директива index определяет файлы, которые будут использоваться в качестве индекса. Веб-сервер будет проверять файлы в порядке их перечисления. Если ни одна страница не была запрошена, блок server найдёт и вернёт файл index.html. Если он не сможет найти этот файл, он попытается обработать index.htm.

Директива server_name

Директива server_name содержит список доменных имен, которые будут обслуживаться этим блоком server. Количество доменов неограниченно; домены в списке следует разделять пробелами.

Символ звёздочки (*) в начале или конце домена задаёт имя с маской, где звёздочка соответствует части (или нескольким частям) имени. Например, имя *.example.com будет соответствовать именам forum.example.com и www.animals.example.com.

Если запрашиваемый url-адрес соответствует нескольким директивам server_name, он сначала ответит той, с которой совпадает полностью.

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

Имена сервера, которые используют регулярные выражения, начинаются с тильды (~). К сожалению, данная тема выходит за рамки данной статьи.

Блоки location

Строка location / указывает, что директивы в скобках будут применяться ко всем запрашиваемым ресурсам, которые не соответствуют никаким другим блокам location.

Такие блоки могут содержать uri путь (например /doc/). Чтобы установить полное соответствие между location и uri, используется символ =. Символ ~ устанавливает соответствие с регулярными выражениями.

Тильда включает чувствительный к регистру режим, а тильда со звёздочкой – регистронезависимый режим.

Если запрос полностью соответствует блоку location, то сервер останавливает поиск и использует такой блок. Если сервер не находит полностью подходящего блока location, он сравнивает URI с параметрами директив location. Nginx выберет блок, в котором используется сочетание символов ^~ и который совпадает с URI.

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

В качестве заключения следует отметить, что Nginx предпочитает точные соответствия. Если таких соответствий нет, он ищет регулярное выражение, а затем выполняет поиск по URI. Чтобы изменить приоритетность поиска по URI, используйте комбинацию символов ^~.

Директива try_files

Директива try_files – очень полезный инструмент, который проверяет наличие файлов в заданном порядке и использует первый найденный файл для обработки запроса.

Это позволяет вам с помощью дополнительных параметров определить, как Nginx будет обслуживать запросы.

В конфигурационном файле по умолчанию есть строка:

try_files $uri $uri/ /index.html;

Это значит, что при поступлении запроса, обслуживаемого блоком location, Nginx сначала попробует обслужить uri как файл (такое поведение задаёт переменная $uri).

Если сервер не обнаруживает соответствия переменной $uri, он попробует использовать uri как каталог.

С помощью слэша в конце сервер проверяет существование каталога, например, $uri/.

Если ни один файл или каталог не найден, Nginx выполняет файл по умолчанию (в данном случае это index.html в root-каталоге блока server). Каждая директива try_files использует последний параметр в качестве запасного варианта, потому этот файл должен существовать в системе.

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

Например, если блок location / не может найти запрашиваемый ресурс, вместо файла index.html он может вернуть ошибку 404:

try_files $uri $uri/ =404;

Для этого нужно поставить знак равно и задать код ошибки в качестве последнего параметра (=404).

Дополнительные параметры

Директива alias позволяет Nginx обслуживать страницы блока location вне заданного каталога (например, вне root).

Например, файлы, запрашиваемые в /doc/, будут обслужены из /usr/share/doc/.

Директива autoindex on позволяет включает листинг директорий Nginx для заданной директивы location.

Строки allow и deny управляют доступом к каталогам.

Заключение

Веб-сервер Nginx является многофункциональным и очень производительным средством, однако его терминология и параметры могут показаться запутанными.

Разобравшись с конфигурациями Nginx и научившись работать с ними, вы получите все преимущества этого мощного и легковесного инструмента.

Tags: ,

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

В одной из предыдущих статей мы уже рассматривали и настройку его основных параметров, в этой же статье я хочу больше остановиться на производительности и подготовке веб-сервера к использованию в боевых условиях. Что касается дистрибутива Linux, то сегодня мы будем рассматривать CentOS, эта система часто используется на серверах и с настройкой Nginx тут могут возникнуть некоторые сложности. Дальше будет рассмотрена настройка Nginx CentOS, поговорим как включить полную поддержку http2, google pagespeed, и настроить основной конфигурационный файл.

В официальных репозиториях CentOS есть Nginx и он, скорее всего, уже установлен в вашей системе. Но мы хотим чтобы сайт работал по протоколу http2, который позволяет передавать все данные одним подключением, а это увеличивает производительность. Для работы по http2 вам понадобиться настроить SSL сертификат, но об этом уже написано в статье получение сертификата Lets Encrypt Nginx. Но это еще не все. для переключения с обычного SSL на HTTP2.0 в большинстве браузеров сейчас используется протокол ALPN, а он поддерживается начиная с OpenSSL 1.02. В то время, как в репозиториях есть только OpenSSL 1.01. Поэтому нам нужно установить версию Nginx, собранную с OpenSSL 1.02. Для этого можно использовать Broken Repo:

sudo yum -y install yum-utils
# sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

Если вы используете репозиторий EPEL, то нужно указать что не надо из него брать Nginx:

sudo yum-config-manager --save --setopt=epel.exclude=nginx*;

Теперь для установки правильной версии Nginx достаточно набрать:

sudo yum install nginx

Будет установлена самая последняя версия Nginx 1.13.2, с полной поддержкой ALPN. Дальше перейдем к настройке.

2. Настройка Nginx

Первым делом следует рассмотреть структуру конфигурационного файла. На первый взгляд, тут все может показаться очень запутанным, но там все достаточно логично:

глобальные опции
events {}
http{
server {
location{}
}
server {}
}

Сначала идут глобальные опции, которые задают основные параметры программы, например, от какого пользователя она будет запущена и количество процессов. Дальше есть секция events , в которой описано как Nginx будет реагировать на входящие подключения, затем идет секция http , которая объединяет все настройки касаемо работы протокола http. В ней находится секция server , каждая такая секция отвечает за отдельный домен, в секции server размещаются секции location , каждая из которых отвечает за определенный URL запроса, обратите внимание, что не файл на сервере, как в Apache, а именно URL запроса.

Основные глобальные настройки мы будем делать в файле /etc/nginx/nginx.conf. Дальше рассмотрим что именно будем менять и какие значения желательно установить. Начнем с глобальных опций:

  • user - пользователь, от имени которого будет запущен сервер, должен быть владельцем каталога с файлами сайта, и от имени его же нужно запускать php-fpm;
  • worker_processes - количество процессов Nginx, которые будут запущены, нужно установить ровно столько, сколько у вас есть ядер, например, у меня - 4;
  • worker_cpu_affinity - этот параметр позволяет закрепить каждый процесс за отдельным ядром процессора, установите значение auto, чтобы программа сама выбрала что и к чему крепить;
  • worker_rlimit_nofile - максимальное количество файлов, которые может открыть программа, на каждое соединение нужно как минимум два файла и каждый процесс будет иметь указанное вами количество соединений, поэтому формула такая: worker_processes * worker_connections* 2, параметр worker_connections разберем чуть ниже;
  • pcre_jit - включите этот параметр для ускорения обработки регулярных выражений с помощью JIT компиляции;

В секции events стоит настроить два параметра:

  • worker_connections - количество соединений для одного процесса, должно быть достаточным для обработки входящих соединений. Сначала нам нужно знать сколько этих входящих соединений есть, для этого смотрим статистику по адресу ip_сервера/nginx_status. Как включить рассмотрим ниже. В строке Active Connections видим количество активных соединений с сервером, также нужно учесть что соединения с php-fpm тоже считаются. Дальше обратите внимание на поля accepted и handled, первое отображает обработанных подключений, второе - количество принятых. Из значения должны быть одинаковыми. Если отличаются значит соединений не хватает. Смотрите примеры, первый снимок проблема, второй - порядок. Для моей конфигурации оптимальной может быть цифра в 200 соединений (всего 800, учитывая 4 процесса):

  • multi_accept - позволяет программе принимать несколько соединений одновременно, тоже ускоряет работу, при большом количестве соединений;
  • accept_mutex - установите значение этого параметра в off, чтобы сразу все процессы получали уведомление про новые соединения;

Также в секции events рекомендуется использовать директиву use epoll, так как этот самый эффективный метод обработки входящих соединений для Linux, но этот метод применяется по умолчанию, поэтому не вижу смысла добавлять его вручную. Рассмотрим еще несколько параметров из секции http:

  • sendfile - использовать метод отправки данных sendfile. Самый эффективный метод для Linux.
  • tcp_nodelay, tcp_nopush - отправляет заголовки и тело запроса одним пакетом, работает немного быстрее;
  • keepalive_timeout - таймаут поддержания соединения с клиентом, если у вас нет очень медленных скриптов, то будет достаточно будет 10 секунд, устанавливаем значение сколько нужно чтобы пользователь мог быть подключен к серверу;
  • reset_timedout_connection - разрывать соединения после таймаута.
  • open_file_cache - кэшировать информацию об открытых файлах. Например, open_file_cache max=200000 inactive=120s; max - максимальное количество файлов в кэше, время кэширования.
  • open_file_cache_valid - когда нужно проверить актуальность файлов. Например: open_file_cache_valid 120s;
  • open_file_cache_min_uses - кэшировать только файлы, которые были открыты указанное количество раз;
  • open_file_cache_errors - запоминать ошибки открытия файлов.
  • if_modified_since - устанавливает каким образом будут обрабатываться заголовки if-modified-since. С помощью этого заголовка браузер может получить ответ 304 если страница не изменилась с момента последнего просмотра. Возможны варианты - не отправлять - off, отправлять при точном совпадении времени - exact, отправлять если время совпадает точно или больше - before;

Вот как-то так будет выглядеть настройка nginx conf:

user nginx;
worker_processes 4;
worker_cpu_affinity auto;
worker_rlimit_nofile 10000;
pcre_jit on;

error_log /var/log/nginx/error.log warn;
load_module "modules/ngx_pagespeed.so";

events {
multi_accept on;
accept_mutex off;
worker_connections 1024;
}

sendfile on;
tcp_nopush on;
tcp_nodelay on;

open_file_cache max=200000 inactive=20s;
open_file_cache_valid 120s;
open_file_cache_errors on;

reset_timedout_connection on;
client_body_timeout 10;
keepalive_timeout 65;

include /etc/nginx/sites-enabled.*.conf

3. Настройка http2

Я не буду подробно описывать настройку секции server, потому что делал это уже в статье установка Nginx в Ubuntu и здесь мне нечего добавить, настройка SSL это достаточно обширная тема и тоже будет рассмотрена в отдельной статье. Но чтобы настроить http2 вам нужно иметь уже SSL. Далее, просто подправьте директиву listen в вашей секции server:

listen 194.67.215.125:443 default_server;

listen 194.67.215.125:443 http2 default_server;

Вот таким простым способом можно включить http2 если перед этим была установлена правильная версия Nginx.

4. Настройка PageSpeed

Google Pagespeed - это модуль Nginx, который выполняет различные оптимизации для того, чтобы страницы грузились быстрее, веб-сервер работал эффективнее, а пользователи не чувствовали дискомфорта. Сюда входит кэширование, оптимизация html кода, оптимизация картинок, объединение javascript и css кода и многое другое. Все это выполняется на уровне Nginx, поэтому эффективнее, чем если бы вы это делали в php. Но тут есть один недостаток, модуль удаляет заголовок Last Modified.

Дело в том, что PageSpeed устанавливает очень долгий строк кэширования для всех файлов, а в имя файла добавляет его хэш. Так скорость загрузки ресурсов выходит намного выше, поскольку браузер будет запрашивать файлы только с новым хэшем, а LastModified удаляется чтобы пользователи смогли увидеть изменения в случае если какой-либо файл будет изменен. А теперь рассмотрим как установить модуль. Нам придется собрать его из исходных кодов.

Сначала установите инструменты для сборки, очень важно, если не установите, потом получите ошибку и не будете знать что делать:

yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel

Скачайте и распакуйте исходники Nginx для вашей версии, например, 1.13.3:

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# tar -xzvf nginx-1.13.3.tar.gz

Настройка сервера nginx не включает пере сборку и замену программы из репозитория, мы просто используем эти исходники для сборки модуля. Скачайте и распакуйте исходники PageSpeed:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# unzip v1.12.34.2-stable.zip

Скачайте и распакуйте библиотеку оптимизации PageSpeed в папку с исходниками модуля:

cd ngx_pagespeed-1.12.34.2-stable/
# wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# tar -xvzf 1.12.34.2-x64.tar.gz

Скачайте и распакуйте исходники OpenSSL 1.02:

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# tar xvpzf openssl-1.0.2k.tar.gz

Теперь нам нужно собрать модуль. Сначала смотрим опции, с которыми собран текущий Nginx:

А теперь переходим в папку с Nginx, подставляем все полученные опции, опцию --add-dynamic-module для PageSpeed, OpenSSL и пробуем собрать:

cd nginx-1.13.3
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic" --with-ld-opt= --with-openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stable ${PS_NGX_EXTRA_FLAGS}
# make

Если все было сделано правильно, то на выходе вы получите модуль ngx_pagespeed.so в папке obj, его нужно скопировать в папку /etc/nginx/modules:

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

Создаем папку для кэша:

mkdir -p /var/ngx_pagespeed_cache
# chown -R nginx:nginx /var/ngx_pagespeed_cache

Теперь добавьте такую строчку для включения модуля в /etc/nginx/nginx.conf:

load_module "modules/ngx_pagespeed.so";