repleo.nginx

Ansible-Rolle - Nginx-Server

Build-Status Ansible Galaxy

Diese Rolle installiert und konfiguriert den Nginx-Webserver. Der Benutzer kann beliebige HTTP-Konfigurationsparameter angeben, die er für seine Website anwenden möchte. Es können beliebig viele Websites mit Ihren gewählten Konfigurationen hinzugefügt werden.

Diese Rolle unterstützt Let's Encrypt SSL für die einfache Installation von HTTPS-Webservern.

Anforderungen

Diese Rolle benötigt Ansible 1.4 oder höher, und die Plattformanforderungen sind in der Metadaten-Datei aufgeführt.

Rollenvariablen

Die Variablen, die an diese Rolle übergeben werden können, sind wie folgt beschrieben:

# Erzwingt die Erstellung von nginx.conf. Normalerweise wird nginx.conf nur geschrieben, wenn sie nicht existiert.
# Wenn dieser Parameter wahr ist, wird die aktuelle nginx.conf überschrieben.
create_nginx_conf: true

# Die maximal erlaubten Clients
nginx_max_clients: 512                                

# Ein Hash der HTTP-Parameter. Hinweis: Alle gültigen nginx-HTTP-Parameter können hier hinzugefügt werden.
# (siehe die Nginx-Dokumentation für weitere Details.)
nginx_http_params:                                    
  sendfile: "on"                                      
  tcp_nopush: "on"
  tcp_nodelay: "on"
  keepalive_timeout: "65"
  access_log: "/var/log/nginx/access.log"
  error_log: "/var/log/nginx/error.log"

# Eine Liste von Hashes, die die Server für Nginx definieren,
# ebenso wie HTTP-Parameter. Alle gültigen Serverparameter
# können hier definiert werden.
nginx_sites:
- file_name: foo
  listen: 8080
  server_name: localhost
  root: "/tmp/site1"
  ssl:
    supplier: "local"
    local_keystore_dir: "{{ playbook_dir }}/files/"
    key: "ssl.key"
    certificate: "ssl_chain.pem"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"
  lines:
    - "return 301 https://$http_host$request_uri;"
- file_name: bar
  listen: 9090
  server_name: ansible
  root: "/tmp/site2"
  locations:
    - name: /
      lines:
        - "try_files: $uri $uri/ /index.html"
    - name: /images/
      lines:
        - "try_files: $uri $uri/ /index.html"

Beispiele

  1. Installieren Sie Nginx mit HTTP-Direktiven Ihrer Wahl, aber ohne konfigurierte Websites:

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { sendfile: "on", access_log: "/var/log/nginx/access.log"}, nginx_sites: [] }
  2. Installieren Sie Nginx mit anderen HTTP-Direktiven als im vorherigen Beispiel, jedoch ohne konfigurierte Websites.

    • hosts: all roles:
      • {role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [] }

Hinweis: Bitte stellen Sie sicher, dass die übergebenen HTTP-Direktiven gültig sind, da diese Rolle die Gültigkeit der Direktiven nicht überprüft. Weitere Details finden Sie in der Nginx-Dokumentation.

  1. Installieren Sie Nginx und fügen Sie eine Website zur Konfiguration hinzu.

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/", lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Hinweis: Jede hinzugefügte Website wird durch eine Liste von Hashes dargestellt, und die generierten Konfigurationen werden in /etc/nginx/sites-available/ abgelegt und haben entsprechende Symlinks von /etc/nginx/sites-enabled/.

Der Dateiname für die spezifische Standortkonfiguration wird im Hash mit dem Schlüssel "file_name" angegeben, alle gültigen Serveranweisungen können zu diesem Hash hinzugefügt werden.

  1. Installieren Sie Nginx und fügen Sie 2 Websites (andere Methode) hinzu.

    • hosts: all

      roles:

      • { role: nginx, create_nginx_conf: true, nginx_http_params: { tcp_nodelay: "on", error_log: "/var/log/nginx/error.log"}, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] }
  2. Fügen Sie virtuelle Hosts zu einer bestehenden Nginx-Installation hinzu (und installieren Sie optinal Nginx, falls er noch nicht installiert ist)

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] } - file_name: bar, server_name: ansible, listen: 9090, root: "/tmp/site2", locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Hinweis: Ohne den Parameter create_nginx_conf: true wird die Rolle nginx.conf nicht überschreiben. Diese Option ermöglicht es, virtuelle Hosts in einer vorhandenen Nginx-Installation basierend auf dieser Rolle hinzuzufügen, d. h. Installationsskripte für verschiedene Dienste, die diese Rolle verwenden.

  1. Beispiel eines HTTPS-Servers einschließlich Installation von Schlüsseln

    • hosts: all

      roles:

      • { role: nginx, nginx_sites: [ - file_name: bar, server_name: localhost, listen: 8080, ssl: { supplier: "local" local_keystore_dir: "{{ playbook_dir }}/files/", key: localhost.key, certificate: localhost_chain.pem }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Hinweis: Der SSL-Schlüssel und das Zertifikat sollten in dem aufrufenden Projekt im Verzeichnis "files" verfügbar sein.

  1. Beispiel eines HTTPS-Servers einschließlich Installation von Let's Encrypt-Schlüsseln

    • hosts: all

      roles:

      • { role: nginx, nginx_separate_logs_per_site: true, nginx_sites: [ - file_name: bar.ssl, server_name: "example.com www.example.com", listen: 443, ssl: { supplier: "letsencrypt", domains: [ "example.com", "www.example.com" ], generate_redirect: true }, locations: [ - name: /, lines: [ - "try_files: $uri $uri/ /index.html" ] - name: /images/, lines: [ - "try_files: $uri $uri/ /index.html" ] ] ] }

Handler

Die NGINX-Rolle bietet zwei Handler:

  • Nginx neu laden
  • Nginx neu starten

Das Neuladen der Nginx-Konfiguration ermöglicht es Ihnen, Ihren Webserver ohne Ausfallzeiten zu aktualisieren. Es kann jedoch vorkommen, dass alte Prozesse nicht aktualisiert werden. Ein Neustart stellt sicher, dass der Webserver beendet und erneut gestartet wird und führt zu (kurzen) Ausfallzeiten.

Beispiel:

- name: Konfigurationsdatei verarbeiten
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - Nginx neu starten

Abhängigkeiten

Keine

Lizenz

BSD

Autoreninformationen

Repleo, Amstelveen, Holland -- www.repleo.nl
Jeroen Arnoldus (jeroen@repleo.nl)

Ursprüngliche Version von:

Benno Joy

Über das Projekt

Ansible role for installing nginx, including support for SSL, letsencrypt and virtual host deployments

Installieren
ansible-galaxy install repleo.nginx
GitHub Repository
Lizenz
bsd-2-clause
Downloads
1.5k
Besitzer
Continuous delivery and software development experts