JoergFiedler.freebsd-jailed-nginx

freebsd-jailed-nginx

Estado de Construcción

Este rol proporciona un servidor nginx enjaulado que escucha en localhost:{80,443} para solicitudes entrantes.

El rol también proporciona una configuración SSL funcional utilizando la funcionalidad de Let's Encrypt.

Necesitas proporcionar un archivo dhparam.pem personalizado. Crea una carpeta con el nombre de tu servidor (example.com) dentro de la carpeta files junto a tu playbook.

El certificado será validado/generado periódicamente cada semana. Para iniciar el servidor de inmediato, se instala un certificado autogenerado para localhost. Puedes generar tus certificados de Let's Encrypt manualmente después de que la cárcel haya sido iniciada usando el siguiente comando:

 /usr/local/bin/acme-client-weekly.sh

Este rol puede ser utilizado por otros roles para servir instalaciones de WordPress o Joomla. Para acceder al directorio webroot, también se configura un servidor SFTP, que se asegura mediante autenticación con clave pública.

Este rol también puede ser utilizado para crear un proxy que termina SSL y reenvía el tráfico a cárceles específicas de dominio o a sitios externos.

Requisitos

Este rol está diseñado para ser usado con una instalación nueva de FreeBSD. Hay una Vagrant Box con proveedores para VirtualBox y EC2 que puedes usar.

Variables del Rol

nginx_letsencrypt_enabled

Establecer en yes habilita la gestión automática de certificados con Let's Encrypt para todos los servidores nginx. Si está habilitado, instalará la herramienta acme-client y preparará alguna configuración para los servidores. Por defecto: no.

nginx_letsencrypt_acme_private_key

Usa esta variable para especificar la clave privada que será utilizada por el cliente acme para comunicarse con Let's Encrypt. Por defecto: '''.

nginx_letsencrypt_api_host

El nombre del servidor con el que se comunicará. Por defecto: acme-v02.api.letsencrypt.org.

nginx_tarsnap_enabled

Si el webroot de todos los servidores nginx debe ser respaldado usando tarsnap. Debe estar habilitado en el host mismo (tarsnap_enabled: yes). Por defecto: {{ tarsnap_enabled | default("no") }}.

nginx_syslogd_server

El servidor syslogd que nginx debería usar para escribir los registros de error y acceso. Por defecto: {{ syslogd_server | default("localhost") }}.

nginx_pf_redirect

Si se establece en yes, el tráfico a los puertos http(s) será redirigido a este servidor nginx de la cárcel. Por defecto: no.

Si está habilitado, la configuración por defecto redirigirá el tráfico dirigido a los puertos 80 y 443 de la interfaz externa del host a esta cárcel. Esta configuración puede cambiarse usando la variable nginx_pf_rdrs.

nginx_pf_rdrs

Esto configura cómo funciona la redirección de tráfico del host a la cárcel. La configuración por defecto se ve así:

nginx_pf_rdrs:
  - ports:
        - 'http'
        - 'https'
    ext_ip: '{{ host_net_ext_ip }}'
    ext_if: '{{ host_net_ext_if }}'
    

Esto significa que todo el tráfico que termina en la interfaz externa del host con ip externa para ambos puertos https y http será redirigido al puerto http del NGINX que se ejecuta dentro de la cárcel.

nginx_servers

Esta variable almacena un arreglo de instancias de servidores nginx para esta cárcel. Puedes usar esto para configurar diferentes tipos de cárceles nginx, por ejemplo, proxy que termina en https, servir múltiples sitios web estáticos o un sitio web habilitado para php. Ver la sección de ejemplo a continuación.

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

Si el servidor debe manejar otras solicitudes además de las dirigidas a server_name. Proporciona una lista de nombres de dominio separados por espacios. Usa default para crear un servidor por defecto de Nginx. Por defecto: ''.

basic_auth_enabled

Establecer en true para habilitar la autenticación básica para este servidor. Necesitas proporcionar el archivo htpasswd y guardarlo en la carpeta {{ server_name }}/htpasswd.

force_www

Si el servidor debe redirigir a nombres de dominio que comienzan con www. Si se establece en yes, todas las solicitudes a name serán redirigidas al subdominio www. También necesitas agregar www.name a la propiedad aliases. Por defecto: no.

https

Configuraciones relacionadas con SSL/HTTPS.

enabled

Establecer en yes para habilitar SSL/HTTPS para este servidor. Las solicitudes solo HTTP serán redirigidas a HTTPS.

letsencrypt_enabled

Si se establece, https está habilitado para este servidor y los certificados serán creados por Let's Encrypt y acme-client. También necesitas establecer nginx_letsencrypt_enabled en yes para habilitar esta función. Por defecto: no.

name

El nombre de dominio de este servidor, por ejemplo, example.com. Por defecto: default.

php

Configuraciones relacionadas con PHP.

fpm_enabled

Establecer en true para instalar y habilitar el paquete php-fpm. Si está habilitado, los siguientes paquetes listados en nginx_php_fpm_pkgs serán instalados. Por defecto: no.

fastcgi_cache

Establecer en off para deshabilitar la caché fastcgi. Por defecto: z_nginx.

max_requests

El número de solicitudes que debe ejecutar cada proceso hijo antes de reiniciarse. Por defecto: 1000.

max_children

El número máximo de procesos hijo que se pueden crear. Por defecto: 5.

memory_limit

Esto establece la cantidad máxima de memoria en bytes que un script puede asignar. Por defecto: 128M.

upload_max_filesize

El tamaño máximo de un archivo que se puede cargar. Por defecto: 48M.

post_max_size

Establece el tamaño máximo permitido para los datos de la publicación. Por defecto: 64M.

sftp_enabled

Habilitar sftp para este servidor. Crea un usuario y ajusta configuraciones como se describe a continuación. Por defecto: false.

sftp

Configuraciones utilizadas para configurar el usuario y configurar SSHD para permitir acceso a la raíz del servidor web para cargar archivos.

user

El nombre del usuario sftp. Por defecto: 'sftp_{{ name | truncate(5, True, "") }}'.

uuid

El uuid del usuario sftp. Por defecto: 5000.

home

El directorio home del usuario. sshd cambiará la raíz a este directorio. Establece la carpeta del servidor web cuando no esté establecido. Por defecto: '/srv/{{ name }}'.

port

El puerto externo que debe ser redirigido a la cárcel usando este rol. Por defecto: 10022.

authorized_keys

La clave pública que se debe usar para autenticar al usuario. Por defecto: '{{ host_sshd_authorized_keys_file }}'.

Dependencias

Ejemplo de Playbook

Host proxy, que reenvía el tráfico a otro servidor externo.

- 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'

Servidor Nginx con módulo php-fpm y 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'

Licencia

BSD

Información del Autor

Si te gusta o tienes ideas para mejorar este proyecto, por favor abre un problema en GitHub. Gracias.

Acerca del proyecto

Provides a jailed nginx server.

Instalar
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
Licencia
Unknown
Descargas
190
Propietario