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 metapakietunginxdla 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, afullto bezpieczny domyślny wybór na przyszłość.nginx_servers: Lista szablonówserver {}(wirtualnych hostów) (lokalizowanych wtemplates/nginx/, końcówka pliku.j2jest automatycznie dodawana do wpisów listy przy wyszukiwaniu).nginx_ssl_servers: Podobnie jaknginx_servers, ale instalowane tylko, jeśli SSL jest skonfigurowane.nginx_conf_http: Ustaw dowolne opcje w sekcjihttp {}plikunginx.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: Opcjassl_ciphersw plikunginx.conf, to jest lista.nginx_conf_ssl_protocols: Opcjassl_protocolsw plikunginx.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żenginx_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ącenginx_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_rootjest ustawione, zostanie zaktualizowane, aby umożliwić typhttpd_sys_content_tuprawnienia 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
ansible-galaxy install galaxyproject.nginx