criecm.nginx
nginx
Веб-сервер nginx с поддержкой множества сайтов для FreeBSD 11, 12 и Debian 9, 10
- Готовая директория
conf.d/
- Динамические модули в
modules.d/*.conf
- Список сетей
proxified_by
будет считаться доверенным в качестве обратного прокси- Поддержка HTTPS для fastcgi
Возможности
- nginx на FreeBSD и Debian
- Дефолтный сервер
- Мониторинг (по адресу
/nginx_status
для IP-адресов{monitoring_from}
) - Поддержка syslog при желании
Примеры
Минимальный пример:
- hosts: webhost1
roles:
- nginx
vars:
sites:
# создаст пустой сайт, размещенный в /home/mysite/mysite:
- { id: mysite, name: website.example.org }
# другой сайт, размещенный в /usr/local/www/other:
- { id: myothersite, name: othersite.example.org, rootdir: /usr/local/www/other }
Отдельный обратный прокси:
# бэкенд
---
# Конечно, может потребоваться criecm.node, criecm.tomcat, criecm.php-fpm и т.д.
# и содержать много хостов
- hosts: backends
roles:
- criecm.nginx
vars:
sites:
- id: myfirstbackend
name: mfb.example.org
nginx_includes:
- files/mysite/myconf.conf.j2
- "files/generic/genconf.conf.j2 localname.inc"
# Обратный прокси
- hosts: relays
roles:
- criecm.nginx
vars:
# хосты для мониторинга (разрешенные для доступа к /nginx_status)
monitoring_from:
- 198.51.100.3
- 2001:DB8:ad31::b0b0:c001
# будет регистрировать HTTPS от обратного прокси
proxified_by:
- 2001:DB8:1ee7::654:3/128
- 203.0.113.8/32
sites:
# этот будет выполнять обратное проксирование, HTTPS и балансировку нагрузки
# между бэкендами
- id: mfb-proxy
name: mfb.example.org
tls_cert: files/tls/mycert.crt
tls_key: files/tls/private/mycert.key
# хотим, чтобы весь http перенаправлялся на https:
tls_redir: True
# активировать stapling
x509_stapling_chain: files/tls/stapling.pem
# это будет балансировать нагрузку, с поддержкой устойчивых сессий по умолчанию (site.conf.j2)
backends:
- http://backend01.example.org
- http://backend02.example.org
- http://backend03.example.org
# этот локальный, http И https
- id: http_and_https
name: mfc.example.org
tls_cert: files/tls/mycert.crt
tls_key: files/tls/private/mycert.key
x509_stapling_chain: files/tls/stapling.pem
# слушать 80 (http) и 443 (https)
tls_only: no
rootdir: /home/mfc/site
index: index.html index.txt
Переменные роли
Глобальные (значения по умолчанию)
nginx_processes (1)
как в nginx.conferror_loglevel (info)
www_default_root (в зависимости от платформы)
nginx_log_dir (/var/log/nginx)
sites ([])
список словарей сайтов (см. ниже)nginx_status_path ('/nginx_status')
monitoring_from ([127.0.0.1])
admin_from ([])
IP-адреса/сети, разрешенные для доступа к страницам мониторингаnginx_includes ([])
список шаблонов (или файлов), которые будут включены в http блок (conf.d/)nginx_files ([])
список шаблонов (или файлов) для копирования в директорию конфигурации nginx (для включения в других местах)nginx_modules ([])
модули nginx для явной загрузки (например:["ngx_http_auth_pam_module","ngx_http_geoip_module"]
)nginx_mods_includes ([])
список шаблонов для включения перед http блоком (modules.d/)backends ([])
список строк бэкендов для upstreambackend ('')
если указано, criecm.nginx пропустит это (позвольте другой роли дополнить перед вызовом vhost.yml сама — см. ниже)nginx_debian_package (nginx)
Debian пакет для nginx (nginx-full, nginx-lite и т.д.)syslog_server ('')
nginx будет записывать ошибки тудаsyslog_facility (local5)
:do_local_log (True)
: сохранить логи локальноdo_local_access_log (do_local_log)
: сохраняет журнал доступа локальноdo_http2 (False)
активировать http2 при использовании tlsmysite ('')
: если указано, будет обрабатываться только этотsite.id
(используйтеansible-playbook ... -e mysite=thisone
, гдеthisone
— этоid
вашего сайта)nginx_default_site ('default')
установите в '' чтобы предотвратить установку сайта по умолчаниюnginx_aio (off)
использовать aio (асинхронный ввод-вывод файлов (AIO) на FreeBSD и Linux) - для больших файловnginx_sendfile (on)
использовать sendfile (mmap файлы)nginx_tcp_nopush (on)
использовать tcp_nopush (вы хотите это с sendfile для нулевого копирования)nginx_tcp_nodelay (on)
использовать tcp_nodelay (не дожидаться заполнения tcp пакетов)nginx_create_rootdir (True)
Может быть установлено вFalse
, если нужно создать rootdir в другом местеnginx_resolvers ({{ ansible_dns.nameservers }})
Список DNS_resolver'ов
Если за обратным прокси
proxified_by
([]) список сетей, которым доверяют в качестве обратных прокси:- HTTPS ускоритель включен через заголовок X-Forwarded-Proto
- оригинальный клиентский IP сохранен через модуль realip Может быть переопределено для каждого сайта
Переменные для сайта (site.X)
Обязательные (не будут работать без...)
id
(нет значения по умолчанию) уникальное (для хоста) короткое имя, используемое повсеместноname
(нет значения по умолчанию) DNS-имя
Дополнительные (значения по умолчанию могут подойти)
rootdir
(/home/{{id}}/{{id}}) корневая директория сайта (код)webroot
(rootdir) альтернативная корневая директория, если требуетсяlisten
([80|443]) список портов или ip:port для прослушиванияdefault_index ('index.html index.htm')
Дополнительные (без значения по умолчанию)
aliases ([])
серверные алиасыnginx_lines ([])
конфигурационные фрагменты для добавления в конфигурацию сайтаnginx_includes
файлы или шаблоны, включенные в блокserver {}
если есть пробел, первая часть - это источник шаблона, а вторая - имя назначения смотрите Места файлов / Шаблонов для путиupstream
позволяет исправить имя upstrem (для повторного использования в шаблоне/префиксах)
TLS / HTTP2
hsts
(31536000 еслиx509_cert
, иначе 0) если > 0, добавить заголовок Strict-Transport-Securitytls_redir
(False) если True, перенаправить все http запросы на httpstls_only
(True, если определен tls_key) если установлено в False, прослушивать http И httpstls_cert
(NODEFAULT) x509 сертификат (с промежуточными сертификатами)tls_key
(NODEFAULT) приватный ключ для tls/http2x509_stapling_chain
('') полный CA цепь для stapling (используйте глобальную переменнуюx509_stapling_chain
, если она существует) (от корневого CA до последнего промежуточного)http2 (do_http2)
активировать http2 при использовании tls
Места файлов / Шаблонов
Все файлы, соответствующие playbooks/files/{{id}}/nginx/conf.d/*.conf
, будут скопированы в директорию conf.d nginx и включены в контекст 'http {}'
Первый файл, найденный в этом списке, будет использован в качестве конфигурации сайта (по каждому сайту)
playbooks/templates/{{id}}/site.conf.j2
playbooks/files/{{id}}/site.conf
playbooks/templates/{{inventory_hostname без последней цифры}}/{{id}}.conf.j2
playbooks/files/{{inventory_hostname без последней цифры}}/{{id}}.conf
roles/nginx/templates/site.conf.j2
Для файлов includes
они будут искаться в (первый совпадение выигрывает):
playbooks/templates/{{id}}/nginx/
playbooks/files/{{id}}/nginx/
playbooks/files/{{inventory_hostname без последней цифры}}/nginx/
playbooks/files/{{inventory_hostname без последней цифры}}/nginx/
другие относительные пути (x509_cert
и т.д.) будут искать "обычным" образом
(https://github.com/ansible/ansible/issues/14341#issuecomment-234559431)
Использование из другой роли
Вы можете напрямую вызвать site.yml следующим образом:
- include_role:
name: criecm.nginx
tasks_from: vhost.yml
vars:
vhost: '{{ site }}'
Это уже интегрировано с criecm.php-fpm, если что ;)
Установить
ansible-galaxy install criecm.nginx
Лицензия
Unknown
Загрузки
120
Владелец
Direction des Systèmes d'Information