galaxyproject.nginx

nginx

Role Ansible do instalacji i zarządzania serwerami nginx.

Wymagania

Ta rola instaluje nginx za pomocą APT na systemach Debian, EPEL na systemach Enterprise Linux lub pkgin na SmartOS. Inne systemy i metody instalacji nie są wspierane.

Zmienne roli

Wszystkie zmienne są opcjonalne.

Ogólna konfiguracja

  • nginx_flavor (domyślnie: full): pakiet nginx do zainstalowania (dla wyborów, zobacz dostawców metapakietu nginx dla swojej dystrybucji opartej na Debianie). Na dystrybucjach opartych na RedHat, może to być galaxy (dla "Galaxy nginx", który zawiera moduły nginx upload i pam) lub inna wartość dla nginx EPEL. Ta wartość nie jest używana w instalacjach pkgin/SmartOS. Zazwyczaj TUS może być używany, a full to bezpieczny domyślny wybór na przyszłość.
  • nginx_servers: Lista szablonów server {} (wirtualnych hostów) (lokalizowanych w templates/nginx/, końcówka pliku .j2 jest automatycznie dodawana do wpisów listy przy wyszukiwaniu).
  • nginx_ssl_servers: Podobnie jak nginx_servers, ale instalowane tylko, jeśli SSL jest skonfigurowane.
  • nginx_conf_http: Ustaw dowolne opcje w sekcji http {} pliku nginx.conf. Jest to hasz (słownik), gdzie klucze to opcje konfiguracyjne nginx, a wartości to wartości tych opcji.
  • nginx_default_redirect_uri: Po użyciu nginx z EPEL, domyślny wirtualny host jest włączony. Ta opcja kontroluje, do jakiego URI domyślny wirtualny host powinien być przekierowany. Wspierane są zmienne nginx.
  • nginx_enable_default_server (domyślnie: true): Włącz/wyłącz domyślnego wirtualnego hosta EPEL.
  • nginx_supervisor: Uruchom nginx pod nadzorem (wymaga ustawienia niektórych zmiennych nadzoru).
  • nginx_conf_dir (domyślnie: /etc/nginx): katalog konfiguracji nginx

Konfiguracja SSL

Zmienne nginx_conf_ssl_certificate* kontrolują użycie SSL. Jeśli nie są ustawione, SSL nie będzie włączone. Zobacz przykłady w Playbooku w celu użycia.

  • nginx_conf_ssl_certificate: Nazwa pliku certyfikatu SSL na zdalnym hoście.
  • nginx_conf_ssl_certificate_key: Nazwa pliku prywatnego klucza SSL na zdalnym hoście.
  • nginx_conf_ssl_ciphers: Opcja ssl_ciphers w pliku nginx.conf, to jest lista.
  • nginx_conf_ssl_protocols: Opcja ssl_protocols w pliku nginx.conf, to jest lista.

Zewnętrzna konfiguracja SSL

  • nginx_ssl_role (domyślnie: niezdefiniowane): Rola do uruchomienia, aby skonfigurować SSL. To pozwala na użycie (na przykład) usegalaxy_eu.certbot, która zazwyczaj musi być uruchomiona po skonfigurowaniu i uruchomieniu nginx na porcie 80, ale przed próbami użycia SSL przez nginx (ponieważ do momentu uruchomienia certbota certyfikaty, których oczekuje nginx, jeszcze nie istnieją). Ustawienie tego spowoduje uruchomienie roli SSL w odpowiednim momencie. Zobacz także nginx_ssl_servers.
  • nginx_conf_ssl_certificate: Nazwa pliku certyfikatu SSL.
  • nginx_conf_ssl_certificate_key: Nazwa pliku prywatnego klucza SSL.

W tym trybie zmienne nginx_conf_ssl_certificate* powinny być absolutnymi ścieżkami.

Konfiguracja SSL w Playbooku

Jeśli nginx_ssl_role jest niezdefiniowane, możesz użyć tej roli do skopiowania certyfikatu i klucza z playbooka.

  • nginx_ssl_conf_dir (domyślnie: <nginx_conf_dir>/ssl): Gdzie skopiować certyfikaty SSL i inne pliki związane z SSL.
  • nginx_ssl_src_dir (domyślnie: files/ssl): Skąd skopiować certyfikaty SSL.
  • sslkeys: Hasz (słownik) zawierający klucze prywatne. Klucze to nazwy plików (bez wiodących elementów ścieżki) odpowiadające nginx_conf_ssl_certificate_key.
  • nginx_conf_ssl_trusted_certificate: Nazwa pliku zaufanych certyfikatów dla OCSP stapling (ustawienie włącza stapling).

W tym trybie zmienne nginx_conf_ssl_certificate* powinny być ścieżkami względnymi. Jednak z powodów historycznych mogą być absolutnymi ścieżkami do plików na zdalnym hoście. Jeśli tak jest, certyfikaty są wyszukiwane w nginx_ssl_src_dir, z usuniętą częścią katalogu ścieżki. Jeśli ścieżka nie jest absolutna, jest względna względem nginx_ssl_src_dir dla źródła, i względna względem nginx_ssl_conf_dir dla miejsca przeznaczenia.

SELinux

Jeśli SELinux jest w trybie egzekwowania, zostaną podjęte dodatkowe działania:

  • Jeśli certbot_well_known_root jest ustawione, zostanie zaktualizowane, aby umożliwić typ httpd_sys_content_t uprawnienia w wszystkich podkatalogach.
  • nginx_selinux_allow_local_connections (domyślnie: false): Zezwól nginx na połączenia do localhosta.

Zależności

Choć nie jest to wymóg, geerlingguy.repo-epel może być użyty do włączenia EPEL za pomocą Ansible.

Przykład Playbooka

Oto kilka przykładów playbooków w zależności od tego, skąd pobierasz certyfikaty

Lokalna konfiguracja SSL

Zainstaluj nginx z certyfikatami SSL przechowywanymi w playbooku (certyfikat w {{ playbook_dir }}/files/ssl/snakeoil_cert.pem):

- name: Zainstaluj i skonfiguruj nginx
  hosts: webservers
  vars:
    sslkeys:
      snakeoil_privatekey.pem: |
        -----BEGIN PRIVATE KEY-----
        MIIE...
        -----END PRIVATE KEY-----
    nginx_conf_ssl_certificate: snakeoil_cert.pem
    nginx_conf_ssl_certificate_key: snakeoil_privatekey.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_conf_http:
      client_max_body_size: 1g
  roles:
    - galaxyproject.nginx

Let's Encrypt

Zainstaluj nginx z certyfikatami SSL uzyskanymi z Let's Encrypt przy użyciu Certbota z usegalaxy_eu.certbot:

- name: Zainstaluj i skonfiguruj nginx
  hosts: webservers
  vars:
    nginx_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem
    nginx_conf_ssl_certificate_key: /etc/ssl/private/private.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: usegalaxy_eu.certbot
    certbot_auth_method: --webroot
    certbot_domains:
      - vhost1.example.org
      - vhost2.example.org
    certbot_admin_email: [email protected]
    certbot_agree_tos: --agree-tos
    certbot_well_known_root: /var/www/_well-known_root
    certbot_post_renewal: |
      systemctl restart nginx || true
  roles:
    - galaxyproject.nginx

W templates/nginx/vhost1.j2 i templates/nginx/vhost2.j2, upewnij się, że dodano coś takiego:

server {
    location /.well-known/ {
        root {{ certbot_well_known_root }};
    }
}

Certyfikaty samopodpisane

Zainstaluj nginx i użyj wygenerowanego i samopodpisanego certyfikatu SSL (dobry wybór do testowania zabezpieczonych usług za zaporą sieciową):

- name: Zainstaluj i skonfiguruj nginx
  hosts: webservers
  vars:
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: galaxyproject.self_signed_certs
    openssl_domains: # Identyczne zachowanie jak certbot_domains
      - vhost1.example.org
      - vhost2.example.org
    # Te mogą być ustawione gdzie chcesz przechować swoje certyfikaty i PK.
    nginx_conf_ssl_certificate_key: /etc/ssl/private/{{ openssl_domains[0] }}.pem
    nginx_conf_ssl_certificate: /etc/ssl/certs/{{ openssl_domains[0] }}.crt
  roles:
    - galaxyproject.nginx

Licencja

Academic Free License ("AFL") v. 3.0

Informacje o autorze

O projekcie

Install and manage an nginx server.

Zainstaluj
ansible-galaxy install galaxyproject.nginx
Licencja
Unknown
Pobrania
28.9k
Właściciel
Galaxy is an open, web-based platform for data-intensive research.