freebsd-jailed-nginx
freebsd-jailed-nginx
Эта роль предоставляет сервер nginx в jail, который принимает запросы на localhost:{80,443}
.
Роль также включает рабочую конфигурацию SSL с использованием функционала Let's Encrypt.
Вам необходимо предоставить свой файл dhparam.pem
. Создайте папку с именем вашего сервера (example.com
) в папке files
рядом с вашим playbook.
Сертификат будет проверяться/генерироваться раз в неделю. Чтобы запустить сервер сразу, устанавливается самоподписанный сертификат для localhost. Вы можете вручную сгенерировать сертификаты Let's Encrypt после запуска jail, используя следующую команду:
/usr/local/bin/acme-client-weekly.sh
Эта роль также может использоваться другими ролями для обслуживания установок WordPress или Joomla. Для доступа к webroot директории также настраивается SFTP сервер, который защищён по аутентификации с помощью публичного ключа.
Эта роль также может использоваться для создания SSL-прокси, который перенаправляет трафик на специфичные для домена jails или внешние сайты.
Требования
Эта роль предназначена для использования с новой установкой FreeBSD. У вас есть возможность использовать Vagrant Box с провайдерами для VirtualBox и EC2.
Переменные роли
nginx_letsencrypt_enabled
Установите в yes
, чтобы включить автоматическое управление сертификатами с Let's Encrypt для всех серверов nginx. Если включено, установит инструмент acme-client
и подготовит конфигурацию для серверов. По умолчанию: no
.
nginx_letsencrypt_acme_private_key
Используйте эту переменную, чтобы указать закрытый ключ, который будет использоваться клиентом acme для общения с Let's Encrypt. По умолчанию: '''
.
nginx_letsencrypt_api_host
Имя хоста сервера для взаимодействия. По умолчанию: acme-v02.api.letsencrypt.org
.
nginx_tarsnap_enabled
Указывать, должна ли webroot всех серверов nginx быть защищена резервным копированием с tarsnap. Должно быть включено на основном хосте (tarsnap_enabled: yes
). По умолчанию: {{ tarsnap_enabled | default("no") }}
.
nginx_syslogd_server
Сервер syslogd, который должен использовать nginx для записи ошибок и доступа по умолчанию: {{ syslogd_server | default("localhost") }}
.
nginx_pf_redirect
Установите в yes
, если трафик на порты http(s) перенаправляется на сервер nginx в jail. По умолчанию: no
.
Если включено, стандартная конфигурация будет перенаправлять трафик, направленный на порты 80 и 443 внешнего интерфейса хоста, на этот jail. Эта конфигурация может быть изменена с помощью переменной nginx_pf_rdrs
.
nginx_pf_rdrs
Эта переменная настраивает, как работает перенаправление трафика с хоста на jail. Стандартная конфигурация выглядит так.
nginx_pf_rdrs:
- ports:
- 'http'
- 'https'
ext_ip: '{{ host_net_ext_ip }}'
ext_if: '{{ host_net_ext_if }}'
Это означает, что весь трафик, пришедший на внешнем интерфейсе хоста с внешним IP для обоих портов https
и http
, будет перенаправлен на порт http
nginx, работающего внутри jail.
nginx_servers
Эта переменная содержит массив экземпляров серверов nginx для этого jail. Вы можете использовать это для настройки различных типов nginx jails, например, прокси для https, обслуживания нескольких статических сайтов или веб-сайта на php. См. раздел примеров ниже.
aliases: ''
basic_auth_enabled: no
force_www: no
https:
enabled: no
letsencrypt_enabled: no
key_file: 'localhost-key.pem'
certbundle_file: 'localhost-certbundle.pem'
dhparam_file: 'localhost-dhparam.pem'
name: 'localhost'
php_fpm_enabled: no
sftp:
user: '{{ server_sftp_user }}'
uuid: '{{ server_sftp_uuid }}'
authorized_keys: '{{ server_sftp_authorized_keys }}'
home: '{{ server_home }}'
port: '{{ server_sftp_port }}'
sftp_enabled: no
webroot: '{{ server_webroot }}'
aliases
Если сервер должен обрабатывать другие запросы, отличные от тех, которые направлены на server_name
. Укажите список доменных имен, разделенных пробелами. Используйте default
, чтобы создать сервер по умолчанию nginx. По умолчанию: ''
.
basic_auth_enabled
Установите в true
, чтобы включить базовую аутентификацию для этого сервера. Вам необходимо предоставить файл htpasswd
и сохранить его в папке {{ server_name }}/htpasswd
.
force_www
Если сервер должен перенаправлять на доменные имена с www
. Если установлено в yes
, все запросы к name
будут перенаправлены на поддомен www. Вам также нужно добавить www.name
в свойство aliases
. По умолчанию: no
.
https
Настройки, связанные с SSL/HTTPS.
enabled
Установите в yes
, чтобы включить SSL/HTTPS для этого сервера. Запросы только по HTTP будут перенаправлены на HTTPS.
letsencrypt_enabled
Если установлено, для этого сервера включен SSL и сертификаты будут созданы Let's Encrypt и acme-client
. Вам также необходимо установить nginx_letsencrypt_enabled
в yes
, чтобы включить эту функцию. По умолчанию: no
.
name
Доменное имя этого сервера, например, example.com
. По умолчанию: default
.
php
Настройки, связанные с PHP.
fpm_enabled
Установите в true, чтобы установить и активировать пакет php-fpm
. Если включено, будут установлены следующие пакеты из nginx_php_fpm_pkgs
. По умолчанию: no
.
fastcgi_cache
Установите в off
, чтобы отключить кэш fastcgi. По умолчанию: z_nginx
.
max_requests
Число запросов, которые каждый дочерний процесс должен выполнить перед перезапуском. По умолчанию: 1000
.
max_children
Максимальное количество дочерних процессов, которые нужно создать. По умолчанию: 5
.
memory_limit
Устанавливает максимальный объем памяти в байтах, который может выделить скрипт. По умолчанию: 128M
.
upload_max_filesize
Максимальный размер загружаемого файла. По умолчанию: 48M
.
post_max_size
Устанавливает максимальный размер данных, разрешенных для отправки. По умолчанию: 64M
.
sftp_enabled
Включить sftp
для этого сервера. Создает пользователя и настраивает параметры, как описано ниже. По умолчанию: false
.
sftp
Настройки, используемые для настройки пользователя и конфигурирования SSHD для разрешения доступа к корню веб-сервера для загрузки файлов.
user
Имя пользователя sftp. По умолчанию: 'sftp_{{ name | truncate(5, True, "") }}'
.
uuid
UUID пользователя sftp. По умолчанию: 5000
.
home
Домашняя директория пользователя. sshd
изменит корень на эту директорию. Установите домашнюю директорию веб-сервера при отсутствии значения. По умолчанию: '/srv/{{ name }}'
.
port
Внешний порт, который должен быть перенаправлен на jail с использованием этой роли. По умолчанию: 10022
.
authorized_keys
Публичный ключ, который должен использоваться для аутентификации пользователя. По умолчанию: '{{ host_sshd_authorized_keys_file }}'
.
Зависимости
Пример Playbook
Прокси хост, который перенаправляет трафик на другой внешний сервер.
- hosts: all
become: true
tasks:
- import_role:
name: 'JoergFiedler.freebsd-jail-host'
- include_role:
name: 'JoergFiedler.freebsd-jailed-nginx'
vars:
nginx_pf_redirect: true
nginx_letsencrypt_enabled: yes
nginx_servers:
- name: 'test.moumantai.de'
https:
enabled: yes
letsencrypt_enabled: yes
proxy:
host: 'www.freebsd.org'
scheme: 'https'
port: 443
local: no
jail_net_ip: '10.1.0.10'
jail_name: 'nginx'
Сервер Nginx с модулем php-fpm
и HTTPS.
- hosts: all
become: true
tasks:
- import_role:
name: 'JoergFiedler.freebsd-jail-host'
- include_role:
name: 'JoergFiedler.freebsd-jailed-nginx'
vars:
jail_net_ip: '10.1.0.10'
jail_name: 'nginx'
nginx_pf_redirect: yes
nginx_servers:
- name: 'default'
https:
enabled: yes
php:
fpm_enabled: yes
sftp_enabled: yes
sftp:
authorized_keys: '~/.vagrant.d/insecure_private_key.pub'
Лицензия
BSD
Информация об авторе
Если вам понравится проект или у вас есть идеи по его улучшению, пожалуйста, оставьте замечание на GitHub. Спасибо.
ansible-galaxy install JoergFiedler/freebsd-jailed-nginx