JoergFiedler.freebsd-jailed-nginx

freebsd-jailed-nginx

Status budowy

Ten zestaw narzędzi udostępnia zablokowany serwer nginx, który nasłuchuje na localhost:{80,443} na nadchodzące żądania.

Zestaw narzędzi dostarcza również działającą konfigurację SSL, korzystając z funkcji dostarczanej przez Let's Encrypt.

Musisz dostarczyć własny plik dhparam.pem. Utwórz folder nazwany według nazwy Twojego serwera (example.com) w folderze files obok Twojego playbooka.

Certyfikat będzie walidowany/tworzony co tydzień. Aby uruchomić serwer natychmiast, zainstalowany zostanie samopodpisany certyfikat localhost. Możesz ręcznie wygenerować certyfikaty Let's Encrypt po uruchomieniu jails, używając poniższego polecenia:

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

Może być używany przez inne zestawy narzędzi do obsługi instalacji WordPressa lub Joomli. Aby uzyskać dostęp do katalogu webroot, skonfigurowany jest również serwer SFTP, który jest zabezpieczony uwierzytelnianiem za pomocą klucza publicznego.

Ten zestaw narzędzi może być również użyty do stworzenia proxy SSL, które przekierowuje ruch do specyficznych jails lub zewnętrznych witryn.

Wymagania

Ten zestaw narzędzi jest przeznaczony do użytku z nową instalacją FreeBSD. Możesz użyć Vagrant Box z dostawcami dla VirtualBox oraz EC2.

Zmienne zestawu narzędzi

nginx_letsencrypt_enabled

Ustaw na yes, aby włączyć automatyczne zarządzanie certyfikatami z Let's Encrypt dla wszystkich serwerów nginx. Jeśli włączone, zainstaluje narzędzie acme-client i przygotuje jakąś konfigurację dla serwerów. Domyślnie: no.

nginx_letsencrypt_acme_private_key

Użyj tej zmiennej, aby określić klucz prywatny, który będzie używany przez klienta acme do komunikacji z Let's Encrypt. Domyślnie: '''.

nginx_letsencrypt_api_host

Nazwa hosta serwera, z którym będziemy się komunikować. Domyślnie: acme-v02.api.letsencrypt.org.

nginx_tarsnap_enabled

Czy webroot wszystkich serwerów nginx powinien być kopiowany przy użyciu tarsnap. Musi być włączone na hoście (tarsnap_enabled: yes). Domyślnie: {{ tarsnap_enabled | default("no") }}.

nginx_syslogd_server

Serwer syslogd, którego nginx powinien używać do zapisywania błędów i dostępu. Domyślnie: {{ syslogd_server | default("localhost") }}.

nginx_pf_redirect

Ustaw na yes, jeśli ruch do portów http(s) ma być kierowany do serwera nginx w tej działalności. Domyślnie: no.

Jeśli włączone, domyślna konfiguracja będzie przekazywać ruch kierowany do portów 80 i 443 z zewnętrznego interfejsu hosta do tego jaila. Konfigurację tę można zmienić, używając zmiennej nginx_pf_rdrs.

nginx_pf_rdrs

Konfiguruje, jak działa przekierowanie ruchu z hosta do jaila. Domyślna konfiguracja wygląda następująco.

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

To oznacza, że cały ruch trafiający do zewnętrznego interfejsu hosta z zewnętrznym IP dla obu portów https i http będzie przekierowywany do portu http NGINX działającego wewnątrz jails.

nginx_servers

Ta zmienna zawiera tablicę instancji serwerów nginx dla tego jaila. Możesz to wykorzystać do konfigurowania różnych rodzajów jaili nginx, np. proxy kończącego https, obsługującego wiele statycznych witryn internetowych lub witryn PHP. Zobacz sekcję przykładów poniżej.

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

Jeśli serwer powinien obsługiwać inne żądania niż te skierowane do server_name, podaj listę nazw domen oddzielonych spacją. Użyj default, aby utworzyć domyślny serwer Nginx. Domyślnie: ''.

basic_auth_enabled

Ustaw na true, aby włączyć podstawowe uwierzytelnianie dla tego serwera. Musisz dostarczyć plik htpasswd i zapisać go w folderze files {{ server_name }}/htpasswd.

force_www

Jeśli serwer powinien przekierować na domeny z prefiksem www. Jeśli ustawione na yes, wszystkie żądania do name będą przekierowywane do subdomeny www. Musisz również dodać www.name do właściwości aliases. Domyślnie: no.

https

Ustawienia związane z SSL/HTTPS.

enabled

Ustaw na yes, aby włączyć SSL/HTTPS dla tego serwera. Żądania tylko HTTP będą przekierowywane do HTTPS.

letsencrypt_enabled

Jeśli ustawione, HTTPS jest włączone dla tego serwera, a certyfikaty będą tworzone przez Let's Encrypt oraz acme-client. Musisz również ustawić nginx_letsencrypt_enabled na yes, aby włączyć tę funkcję. Domyślnie: no.

name

Nazwa domeny tego serwera, np. example.com. Domyślnie: default.

php

Ustawienia związane z PHP.

fpm_enabled

Ustaw na prawdę, aby zainstalować i włączyć pakiet php-fpm. Jeśli włączone, zainstalowane zostaną poniższe pakiety wymienione w nginx_php_fpm_pkgs. Domyślnie: no.

fastcgi_cache

Ustaw na off, aby wyłączyć pamięć podręczną fastcgi. Domyślnie: z_nginx.

max_requests

Liczba żądań, które każdy proces potomny powinien wykonać przed ponownym uruchomieniem. Domyślnie: 1000.

max_children

Maksymalna liczba procesów potomnych, które mogą być tworzone. Domyślnie: 5.

memory_limit

To ustawia maksymalną ilość pamięci w bajtach, którą skrypt może przydzielić. Domyślnie: 128M.

upload_max_filesize

Maksymalny rozmiar przesyłanego pliku. Domyślnie: 48M.

post_max_size

Ustawia maksymalny rozmiar dozwolonych danych post. Domyślnie: 64M.

sftp_enabled

Włącz sftp dla tego serwera. Tworzy użytkownika i dostosowuje ustawienia, jak opisano poniżej. Domyślnie: false.

sftp

Ustawienia używane do skonfigurowania użytkownika i SSHD, aby umożliwić dostęp do katalogu głównego serwera internetowego w celu przesyłania plików.

user

Nazwa użytkownika sftp. Domyślnie: 'sftp_{{ name | truncate(5, True, "") }}'.

uuid

UUID użytkownika sftp. Domyślnie: 5000.

home

Katalog domowy użytkownika. sshd zmieni katalog do tego katalogu. Ustaw folder główny serwera internetowego, gdy nie jest ustawiony. Domyślnie: '/srv/{{ name }}'.

port

Zewnętrzny port, który powinien być przekierowany do jaila przy użyciu tego zestawu narzędzi. Domyślnie: 10022.

authorized_keys

Klucz publiczny, który powinien być używany do uwierzytelniania użytkownika. Domyślnie: '{{ host_sshd_authorized_keys_file }}'.

Zależności

Przykład Playbooka

Serwer proxy, który przekierowuje ruch do innego zewnętrznego serwera.

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

Serwer Nginx z modułem php-fpm i 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'

Licencja

BSD

Informacje o autorze

Jeśli Ci się podoba lub masz pomysły na ulepszenie tego projektu, proszę otwórz zgłoszenie na GitHubie. Dziękujemy.

Zainstaluj
ansible-galaxy install JoergFiedler.freebsd-jailed-nginx
Licencja
Unknown
Pobrania
190
Właściciel