hoall.nginx-proxy
Rola nginx-proxy
Ta rola instaluje nginx jako serwer proxy. Ustawienia są przeznaczone tylko do użycia z https. Upewnij się, że skonfigurujesz swój certificat SSL. Parametry dhparam zostaną zastąpione nowo wygenerowaną wersją. Generowanie odbywa się podczas instalacji. Rola ustawia również przydatne domyślne wartości dla serwerów proxy.
Poziom bezpieczeństwa jest nowoczesny według definicji fundacji Mozilla (zobacz ich generator po więcej informacji: https://mozilla.github.io/server-side-tls/ssl-config-generator/). Konfiguracja powinna pasować do większości systemów. Szablony zostały wygenerowane przy użyciu Ubuntu 16.04. HSTS jest włączone. Konfiguracja otrzymuje ocenę A+ na ssllabs.com.
Domyślna strona internetowa jest przypisana do /. Stworzyłem i używam tej roli, aby abstrahować i zabezpieczyć połączenie z moim serwerem tomcat.
Jeśli masz ulepszenia, stwórz pull request.
Wymagania
Certyfikat SSL i openssl (dla parametru dhparam). Jeśli szukasz dobrej roli, polecam zapoznać się z geerlingguy.certbot.
Zmienne Roli
UWAGA: zmienne, które należy nadpisać, są napisane WIELKIMI literami.
Nazwa | Domyślna Wartość | Opis |
---|---|---|
NP_SERVER_NAME |
BRAK | 'Ciąg zawierający nazwy, do których serwer (i lokalizacja) ma nasłuchiwać. Tj. "example.com www.example.com"' |
NP_SSL_CERTIFICATE |
BRAK | 'Ścieżka do twojego certyfikatu SSL (fullchain.pem). Tj. /etc/letsencrypt/live/example.de/fullchain.pem' |
NP_SSL_CERTIFICATE_KEY |
BRAK | 'Ścieżka do prywatnego klucza certyfikatu SSL (privkey.pem). Tj. /etc/letsencrypt/live/example.de/privkey.pem' |
NP_PROXY_PASS |
BRAK | 'Ścieżka do lokalizacji. Tj. "http://127.0.0.1:8080/example/"' |
NP_REWRITE |
BRAK | 'Reguła przepisywania dla strony. Tj. "^/example(.*)$ $1 last"' |
np_worker_processes |
{{ ansible_processor_count }} | 'Liczba procesów roboczych, które nginx powinien używać. Domyślnie jeden na rdzeń, ustalany przez setup ansible.' |
np_worker_connections |
1024 | 'Liczba połączeń dla każdego procesu roboczego (w tym do serwerów zaplecza). Pamiętaj, że przeglądarka otwiera więcej niż jedno połączenie, aby zwiększyć prędkość.' |
np_keep_alive_timeout |
15 | 'Czas oczekiwania dla nieaktywnych połączeń klienta w sekundach.' |
np_client_max_body_size |
10m | 'Ustala maksymalny dozwolony rozmiar ciała żądania klienta, określony w nagłówku „Content-Length”.' |
np_client_body_buffer_size |
10k | 'Ustala rozmiar bufora do odczytu ciała żądania klienta.' |
np_proxy_connect_timeout |
10 | 'Definiuje czas oczekiwania na nawiązanie połączenia z serwerem pośredniczącym. Należy zauważyć, że ten czas oczekiwania zazwyczaj nie może przekraczać 75 sekund.' |
np_proxy_send_timeout |
10 | 'Ustala czas oczekiwania (w sekundach) na przesyłanie żądania do serwera pośredniczącego.' |
np_proxy_read_timeout |
10 | 'Definiuje czas oczekiwania (w sekundach) na odczytanie odpowiedzi z serwera pośredniczącego.' |
np_proxy_buffers |
"32 8k" | 'Ustala rozmiar bufora używanego do odczytu pierwszej części odpowiedzi otrzymanej od serwera pośredniczącego. Ta część zazwyczaj zawiera mały nagłówek odpowiedzi. Domyślnie rozmiar bufora jest równy jednej stronie pamięci. Może być to 4K lub 8K, w zależności od platformy. Może być jednak mniejszy.' |
Uwaga: część tej dokumentacji pochodzi z oficjalnej dokumentacji nginx (https://nginx.org/en/docs/). Źródła i dokumentacja są rozpowszechniane na podstawie licencji BSD typu 2-clause.
Dostosuj zmienne zgodnie z własnymi potrzebami.
Zależności
Przykładowy Playbook
- hosts: servers
roles:
- { role: hoall.nginx-proxy, NP_SERVER_NAME: "example.com www.example.com", NP_SSL_CERTIFICATE: /etc/letsencrypt/live/fullchain.pem, NP_SSL_CERTIFICATE_KEY: /etc/letsencrypt/live/privkey.pem }
Licencja
BSD
Informacje o autorze
Felix Paetow fhmpaetow@fsfe.org
Installation, configuration and hardening of a nginx proxy with one website.
ansible-galaxy install hoall.nginx-proxy