mirror of
https://github.com/kemko/frontend-nginx-role.git
synced 2026-01-01 15:45:43 +03:00
83 lines
7.3 KiB
Markdown
83 lines
7.3 KiB
Markdown
frontend-nginx-role
|
||
=========
|
||
|
||
Роль устанавливает nginx, скачивает файл с данными о том, что и куда нужно проксировать, затем генерирует на основании полученных данных конфигруацию для nginx. Рассчитана только на обычную редакцию, поэтому возможности Plus не используются и не раскрываются. Поддерживается только CentOS.
|
||
|
||
**Роль в текущем виде не задумывалась и не предназначена для реального использования**. Роль появилась в рамках выполнения тестового задания. Примерная формулировка - написать роль, которая установит nginx, возьмёт из внешнего источника данные об апстримах и сконфигурирует установленный nginx соответствующим образом.
|
||
|
||
Требования
|
||
----------
|
||
|
||
Внешний файл с описанием апстримов. Пример:
|
||
```yaml
|
||
---
|
||
|
||
- name: testapp1
|
||
external_domains:
|
||
- app1.test.com
|
||
servers:
|
||
- name: 1.1.1.1
|
||
backup: true
|
||
- name: 2.2.2.2
|
||
|
||
- name: testapp2
|
||
external_domains:
|
||
- app2.test.com
|
||
servers:
|
||
- name: 3.3.3.3
|
||
backup: true
|
||
- name: 4.4.4.4
|
||
weight: 2
|
||
```
|
||
|
||
Список параметров основного блока:
|
||
|
||
| Название | Обязательный | Описание |
|
||
| --- | --- | --- |
|
||
| name | Да | Название апстрима |
|
||
| external_domain | Да | Домен или несколько доменов, которые будут прописаны переданы в параметре server_name, поддерживаются регулярные выражения |
|
||
| servers | Да | Блок с описанием серверов, которые будут обрабатывать запросы этого upstream, описание возможных параметров этого блока будет ниже |
|
||
| additional_location_config | Нет | Позволяет задать в конфигурации nginx произвольный набор параметров на уровне location / { ... } |
|
||
| additional_server_config | Нет | Позволяет задать в конфигурации nginx произвольный набор параметров на уровне server { ... } |
|
||
|
||
Список параметров блока servers:
|
||
|
||
| Название | Обязательный | Описание |
|
||
| --- | --- | --- |
|
||
| name | Да | IP-адрес или DNS-имя сервера. Допускается указание порта. DNS-имя будет резолвиться только в момент чтения конфига и затем не перепроверяется |
|
||
| weight | Нет | Задаёт вес сервера, по умолчанию 1 |
|
||
| max_conns | Нет | Ограничивает максимальное число одновременных активных соединений к проксируемому серверу, по умолчанию ограничения нет |
|
||
| max_fails | Нет | Задаёт число неудачных попыток работы с сервером, которые должны произойти в течение времени, заданного параметром fail_timeout, чтобы сервер считался недоступным на период времени, также заданный параметром fail_timeout. По умолчанию число попыток устанавливается равным 1. Нулевое значение отключает учёт попыток |
|
||
| fail_timeout | Нет | Задаёт время, в течение которого должно произойти заданное число неудачных попыток работы с сервером для того, чтобы сервер считался недоступным и время, в течение которого сервер будет считаться недоступным. По умолчанию параметр равен 10 секундам |
|
||
| backup | Нет | Помечает сервер как запасной сервер. На него будут передаваться запросы в случае, если не работают основные серверы |
|
||
| down | Нет | Помечает сервер как постоянно недоступный |
|
||
|
||
Параметры роли
|
||
--------------
|
||
| Название | Значение по умлочанию | Описание |
|
||
| --- | --- | --- |
|
||
|nginx_upstreams_url | Отсутствует | Единственный обязательный параметр. Путь до yaml-файла c описанием апстримов. Формат файла описан в секции [Требования](#Требования) |
|
||
| nginx_listen_addr | 0.0.0.0 | Адрес, на котором nginx будет принимать соединения, 0.0.0.0 означает слушать принимать соединения, пришедшие на все имеющиеся на сервере IP-адреса, включая те, которые появились после запуска nginx |
|
||
nginx_listen_port | 80 | Порт, на котором nginx будет принимать соединения |
|
||
| nginx_start | true | Должен ли nginx быть запущен. Значение false останавливает демон и отключает его автозапуск |
|
||
| nginx_branch | mainline | Ветка nginx. Существует stable (чётные версии), в которой только исправляются баги и mainline (нечётные), в которой происходит ввод новых возможностей. Используется для выбора адреса репозитория |
|
||
| nginx_version | 1.17.2 | Версия nginx для установки. Неплохая идея держать на всех серверах одну и ту же версию /
|
||
| nginx_worker_processes | auto | Количество запускаемых воркеров nginx. В значении auto, nginx пытается вычислить количество CPU на сервере и запускает это же количество воркеров |
|
||
| nginx_worker_connections | 1024 | Максимальное количество соединений, которое будет одновременно обрабатывать один воркер |
|
||
| nginx_keepalive_timeout | 65 | Задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Значение 0 запрещает keep-alive соединения с клиентами |
|
||
|
||
Пример плейбука
|
||
---------------
|
||
|
||
```yaml
|
||
- hosts: frontends
|
||
roles:
|
||
- role: frontend-nginx-role
|
||
nginx_upstreams_url: "http://configs.test.com/upstreams/frontend.yaml"
|
||
```
|
||
|
||
License
|
||
-------
|
||
|
||
BSD
|