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
Лицензия
Unknown
Загрузки
179
Владелец