JoergFiedler.freebsd-jailed-nginx

freebsd-jailed-nginx

Statut de Build

Ce rôle fournit un serveur nginx en prison qui écoute sur localhost:{80,443} pour les requêtes entrantes.

Le rôle offre également une configuration SSL fonctionnelle grâce aux services fournis par Let's Encrypt.

Vous devez fournir un fichier dhparam.pem personnalisé. Créez un dossier portant le nom de votre serveur (example.com) dans le dossier files à côté de votre playbook.

Le certificat sera validé/généré chaque semaine. Pour faire fonctionner le serveur immédiatement, un certificat localhost auto-signé est installé. Vous pouvez générer vos certificats Let's Encrypt manuellement après le démarrage de la prison en utilisant la commande suivante :

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

Il peut être utilisé par d'autres rôles pour servir des installations de WordPress ou Joomla. Un serveur SFTP est également configuré pour accéder au répertoire webroot, sécurisé par une authentification par clé publique.

Ce rôle peut également être utilisé pour créer un proxy SSL qui fait passer le trafic vers des prisons spécifiques à des domaines ou des sites externes.

Exigences

Ce rôle est destiné à être utilisé avec une installation FreeBSD fraîche. Il y a une boîte Vagrant avec des fournisseurs pour VirtualBox et EC2 que vous pouvez utiliser.

Variables de rôle

nginx_letsencrypt_enabled

Définissez sur yes pour activer la gestion automatique des certificats avec Let's Encrypt pour tous les serveurs nginx. Si activé, cela installera l'outil acme-client et préparera des configurations pour les serveurs. Par défaut : no.

nginx_letsencrypt_acme_private_key

Utilisez cette variable pour spécifier la clé privée qui sera utilisée par le client acme pour communiquer avec Let's Encrypt. Par défaut : '''.

nginx_letsencrypt_api_host

Le nom d'hôte du serveur avec lequel communiquer. Par défaut : acme-v02.api.letsencrypt.org.

nginx_tarsnap_enabled

Indique si le webroot de tous les serveurs nginx doit être sauvegardé à l'aide de tarsnap. Doit être activé sur l'hôte lui-même (tarsnap_enabled: yes). Par défaut : {{ tarsnap_enabled | default("no") }}.

nginx_syslogd_server

Le serveur syslogd que nginx doit utiliser pour écrire les journaux d'erreurs et d'accès. Par défaut : {{ syslogd_server | default("localhost") }}.

nginx_pf_redirect

Si défini sur yes, le trafic vers les ports http(s) est redirigé vers le serveur nginx de cette prison. Par défaut : no.

Si activé, la configuration par défaut redirigera le trafic dirigé vers les ports 80 et 443 de l'interface externe de l'hôte vers cette prison. Cette configuration peut être modifiée en utilisant la variable nginx_pf_rdrs.

nginx_pf_rdrs

Cela configure comment la redirection du trafic de l'hôte vers la prison fonctionne. La configuration par défaut ressemble à ceci.

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

Cela signifie que tout le trafic se terminant sur l'interface externe de l'hôte avec une IP externe pour les ports https et http sera redirigé vers le port http de NGINX fonctionnant à l'intérieur de la prison.

nginx_servers

Cette variable contient un tableau d'instances de serveur nginx pour cette prison. Vous pouvez l'utiliser pour configurer différents types de prisons nginx, par exemple un proxy de terminaison https, servir plusieurs sites web statiques ou un site web activé pour php. Consultez la section d'exemple ci-dessous.

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 le serveur doit gérer d'autres requêtes que celles dirigées vers server_name. Fournissez une liste de noms de domaine séparés par un espace. Utilisez default pour créer un serveur par défaut Nginx. Par défaut : ''.

basic_auth_enabled

Définissez sur true pour activer l'authentification de base pour ce serveur. Vous devez fournir le fichier htpasswd et l'enregistrer dans le dossier {{ server_name }}/htpasswd.

force_www

Si le serveur doit rediriger vers les noms de domaine www. Si défini sur yes, toutes les requêtes vers name seront redirigées vers le sous-domaine www. Vous devez également ajouter www.name à la propriété aliases. Par défaut : no.

https

Réglages liés à SSL/HTTPS.

enabled

Définissez sur yes pour activer SSL/HTTPS pour ce serveur. Les requêtes HTTP seulement seront redirigées vers HTTPS.

letsencrypt_enabled

Si défini, https est activé pour ce serveur et des certificats seront créés par Let's Encrypt et acme-client. Vous devez également définir nginx_letsencrypt_enabled sur yes pour activer cette fonction. Par défaut : no.

name

Le nom de domaine de ce serveur, par exemple example.com. Par défaut : default.

php

Paramètres liés à PHP

fpm_enabled

Définissez sur true pour installer et activer le package php-fpm. Si activé, les packages suivants listés dans nginx_php_fpm_pkgs seront installés. Par défaut : no.

fastcgi_cache

Définissez sur off pour désactiver le cache fastcgi. Par défaut : z_nginx.

max_requests

Le nombre de requêtes que chaque processus enfant doit exécuter avant de redémarrer. Par défaut : 1000.

max_children

Le nombre maximum de processus enfants à créer. Par défaut : 5.

memory_limit

Cela fixe la quantité maximum de mémoire en octets qu'un script est autorisé à allouer. Par défaut : 128M.

upload_max_filesize

La taille maximum d'un fichier téléchargé. Par défaut : 48M.

post_max_size

Fixe la taille maximum des données post autorisées. Par défaut : 64M.

sftp_enabled

Activez sftp pour ce serveur. Crée un utilisateur et ajuste les paramètres comme décrit ci-dessous. Par défaut : false.

sftp

Réglages utilisés pour configurer l'utilisateur et configurer SSHD afin de permettre l'accès au répertoire racine du serveur web pour télécharger des fichiers.

user

Le nom de l'utilisateur sftp. Par défaut : 'sftp_{{ name | truncate(5, True, "") }}'.

uuid

L'uuid de l'utilisateur sftp. Par défaut : 5000.

home

Le répertoire personnel de l'utilisateur. sshd changera de racine pour ce répertoire. Fixez le répertoire racine du serveur web lorsqu'il n'est pas défini. Par défaut : '/srv/{{ name }}'.

port

Le port externe qui doit être redirigé vers la prison en utilisant ce rôle. Par défaut : 10022.

authorized_keys

La clé publique qui doit être utilisée pour authentifier l'utilisateur. Par défaut : '{{ host_sshd_authorized_keys_file }}'.

Dépendances

Exemple de Playbook

Hôte proxy, qui redirige le trafic vers un autre serveur externe.

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

Serveur Nginx avec module php-fpm et 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'

Licence

BSD

Informations sur l'auteur

Si vous aimez ce projet ou si vous avez des idées pour l'améliorer, merci de proposer une issue sur GitHub. Merci.

À propos du projet

Provides a jailed nginx server.

Installer
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
Licence
Unknown
Téléchargements
190
Propriétaire