JoergFiedler.freebsd-jailed-nginx

freebsd-jailed-nginx

Build-Status

Diese Rolle bietet einen in einem Jail laufenden Nginx-Server, der auf localhost:{80,443} auf eingehende Anfragen hört.

Die Rolle umfasst auch eine funktionierende SSL-Konfiguration, die mit Hilfe von Let's Encrypt bereitgestellt wird.

Sie müssen eine benutzerdefinierte dhparam.pem-Datei bereitstellen. Erstellen Sie einen Ordner mit dem Namen Ihres Servernamens (example.com) im Ordner files, der neben Ihrem Playbook liegt.

Das Zertifikat wird regelmäßig wöchentlich validiert/erzeugt. Um den Server sofort zum Laufen zu bringen, wird ein selbstsigniertes localhost-Zertifikat installiert. Sie können Ihre Let's Encrypt-Zertifikate manuell generieren, nachdem das Jail gestartet wurde, indem Sie den folgenden Befehl verwenden:

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

Es kann auch von anderen Rollen verwendet werden, um WordPress- oder Joomla-Installationen bereitzustellen. Um auf das Webroot-Verzeichnis zuzugreifen, ist auch ein SFTP-Server konfiguriert, der durch öffentliche Schlüsselauthentifizierung gesichert ist.

Diese Rolle kann auch verwendet werden, um einen SSL-terminierenden Proxy zu erstellen, der den Verkehr an domain-spezifische Jails oder externe Seiten weiterleitet.

Anforderungen

Diese Rolle ist dazu gedacht, mit einer frischen FreeBSD-Installation verwendet zu werden. Es gibt eine Vagrant-Box mit Anbietern für VirtualBox und EC2, die Sie verwenden können.

Rollenvariablen

nginx_letsencrypt_enabled

Setzen Sie auf yes, um das automatische Zertifikatsmanagement mit Let's Encrypt für alle Nginx-Server zu aktivieren. Wenn aktiviert, wird das acme-client-Tool installiert und einige Konfigurationen für die Server vorbereitet. Standard: no.

nginx_letsencrypt_acme_private_key

Verwenden Sie diese Variable, um den privaten Schlüssel anzugeben, der vom acme-Client zur Kommunikation mit Let's Encrypt verwendet wird. Standard: '''.

nginx_letsencrypt_api_host

Der Hostname des Servers, mit dem kommuniziert werden soll. Standard: acme-v02.api.letsencrypt.org.

nginx_tarsnap_enabled

Ob das Webroot aller Nginx-Server mit Tarsnap gesichert werden soll. Muss auf dem Host selbst aktiviert werden (tarsnap_enabled: yes). Standard: {{ tarsnap_enabled | default("no") }}.

nginx_syslogd_server

Der Syslogd-Server, den Nginx verwenden soll, um Fehler- und Zugriffsprotokolle zu schreiben. Standard: {{ syslogd_server | default("localhost") }}.

nginx_pf_redirect

Wenn auf yes gesetzt, wird der Verkehr zu den http(s)-Ports an diesen Nginx-Server im Jail weitergeleitet. Standard: no.

Wenn aktiviert, wird die Standardkonfiguration den Datenverkehr, der an die Ports 80 und 443 der externen Schnittstelle des Hosts gerichtet ist, an dieses Jail weiterleiten. Diese Konfiguration kann mit der Variable nginx_pf_rdrs geändert werden.

nginx_pf_rdrs

Diese Konfiguration regelt, wie die Verkehrsumleitung vom Host zum Jail funktioniert. Die Standardkonfiguration sieht so aus:

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

Das bedeutet, dass der gesamte Verkehr, der an die externe Schnittstelle des Hosts mit der externen IP für beide Ports https und http endet, an den Port http des NGINX weitergeleitet wird, der im Jail läuft.

nginx_servers

Diese Variable enthält ein Array von Nginx-Serverinstanzen für dieses Jail. Sie können dies verwenden, um verschiedene Arten von Nginx-Jails zu konfigurieren, z. B. einen HTTPS-terminierenden Proxy, mehrere statische Websites oder eine PHP-fähige Website. Siehe den Beispielabschnitt unten.

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

Wenn der Server weitere Anfragen als die an server_name gerichtet verarbeiten soll. Geben Sie eine Liste von Domainnamen getrennt durch Leerzeichen an. Verwenden Sie default, um einen NGINX-Standardserver zu erstellen. Standard: ''.

basic_auth_enabled

Setzen Sie auf true, um grundlegende Authentifizierung für diesen Server zu aktivieren. Sie müssen die htpasswd-Datei bereitstellen und unter files {{ server_name }}/htpasswd speichern.

force_www

Wenn der Server auf www-Domainnamen umleiten soll. Wenn auf yes gesetzt, werden alle Anforderungen an name auf die www-Subdomain umgeleitet. Sie müssen auch www.name zur aliases-Eigenschaft hinzufügen. Standard: no.

https

Einstellungen im Zusammenhang mit SSL/HTTPS.

enabled

Setzen Sie auf yes, um SSL/HTTPS für diesen Server zu aktivieren. HTTP-Anfragen werden auf HTTPS umgeleitet.

letsencrypt_enabled

Wenn gesetzt, wird HTTPS für diesen Server aktiviert und die Zertifikate werden von Let's Encrypt und acme-client erstellt. Sie müssen auch nginx_letsencrypt_enabled auf yes setzen, um diese Funktion zu aktivieren. Standard: no.

name

Der Domainname dieses Servers, z. B. example.com. Standard: default.

php

Einstellungen im Zusammenhang mit PHP.

fpm_enabled

Setzen Sie auf true, um das Paket php-fpm zu installieren und zu aktivieren. Wenn aktiviert, werden die folgenden Pakete, die in nginx_php_fpm_pkgs aufgeführt sind, installiert. Standard: no.

fastcgi_cache

Setzen Sie auf off, um den FastCGI-Cache zu deaktivieren. Standard: z_nginx.

max_requests

Die Anzahl der Anforderungen, die jeder Kindprozess ausführen soll, bevor er neu gestartet wird. Standard: 1000.

max_children

Die maximale Anzahl an Kindprozessen, die erstellt werden sollen. Standard: 5.

memory_limit

Dies legt die maximale Menge an Speicher in Bytes fest, die ein Skript zuweisen darf. Standard: 128M.

upload_max_filesize

Die maximale Größe einer hochgeladenen Datei. Standard: 48M.

post_max_size

Hiermit wird die maximale Größe der zulässigen Postdaten festgelegt. Standard: 64M

sftp_enabled

Aktiviert sftp für diesen Server. Erstellt einen Benutzer und passt die Einstellungen wie unten beschrieben an. Standard: false.

sftp

Einstellungen, die verwendet werden, um den Benutzer einzurichten und SSHD zu konfigurieren, um den Zugriff auf das Webserver-Wurzelverzeichnis zum Hochladen von Dateien zu ermöglichen.

user

Der Benutzername des sftp-Benutzers. Standard: 'sftp_{{ name | truncate(5, True, "") }}'.

uuid

Die UUID des sftp-Benutzers. Standard: 5000.

home

Das Home-Verzeichnis des Benutzers. sshd wechselt das Root-Verzeichnis zu diesem Verzeichnis. Setzen Sie das Home-Verzeichnis des Webservers, wenn nicht festgelegt. Standard: '/srv/{{ name }}'.

port

Der externe Port, der mit diesem Rolleneinsatz an das Jail weitergeleitet werden soll. Standard: 10022.

authorized_keys

Der öffentliche Schlüssel, der zur Authentifizierung des Benutzers verwendet werden soll. Standard: '{{ host_sshd_authorized_keys_file }}'.

Abhängigkeiten

Beispiel-Playbook

Proxy-Host, der den Verkehr an einen anderen externen Server weiterleitet.

- 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-Server mit php-fpm-Modul und 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'

Lizenz

BSD

Informationen zum Autor

Wenn Ihnen das Projekt gefällt oder Sie Ideen zur Verbesserung haben, öffnen Sie bitte ein Problem auf GitHub. Danke.

Installieren
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
GitHub Repository
Lizenz
Unknown
Downloads
190
Besitzer