Shir0kamii.ansible_role_nginx

Ansible-Rolle: Nginx

Build-Status

Hinweis: Bitte ziehen Sie die offizielle NGINX Ansible Rolle von NGINX, Inc. in Betracht.

Installiert Nginx auf RedHat/CentOS, Debian/Ubuntu, Archlinux, FreeBSD oder OpenBSD-Servern.

Diese Rolle installiert und konfiguriert die neueste Version von Nginx aus dem Nginx-Yum-Repository (auf RedHat-basierten Systemen), apt (auf Debian-basierten Systemen), pacman (Archlinux), pkgng (auf FreeBSD-Systemen) oder pkg_add (auf OpenBSD-Systemen). Sie müssen möglicherweise zusätzliche Konfigurationen vornehmen, nachdem diese Rolle Nginx installiert hat, z. B. Ihre eigene [virtualhost].conf-Datei im Verzeichnis /etc/nginx/conf.d/ erstellen, die den Standort und die Optionen für Ihre spezielle Website beschreibt.

Anforderungen

Keine.

Rollenvariablen

Verfügbare Variablen sind unten aufgelistet, zusammen mit den Standardwerten (siehe defaults/main.yml):

nginx_vhosts: []

Eine Liste von vhost-Definitionen (Server-Blöcke) für Nginx-virtuelle Hosts. Jeder Eintrag erstellt eine separate Konfigurationsdatei, die nach server_name benannt wird. Wenn diese leer gelassen wird, müssen Sie Ihre eigene virtuelle Host-Konfiguration bereitstellen. Siehe das kommentierte Beispiel in defaults/main.yml für verfügbare Serveroptionen. Wenn Sie viele Anpassungen für Ihre Serverdefinition(en) benötigen, ist es wahrscheinlich besser, die vhost-Konfigurationsdatei selbst zu verwalten und diese Variable auf [] zu setzen.

nginx_vhosts:
  - listen: "443 ssl http2"
    server_name: "example.com"
    server_name_redirect: "www.example.com"
    root: "/var/www/example.com"
    index: "index.php index.html index.htm"
    error_page: ""
    access_log: ""
    error_log: ""
    state: "present"
    template: "{{ nginx_vhost_template }}"
    filename: "example.com.conf"
    extra_parameters: |
      location ~ \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
      ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
      ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
      ssl_protocols       TLSv1.1 TLSv1.2;
      ssl_ciphers         HIGH:!aNULL:!MD5;

Ein Beispiel für einen vollständig ausgefüllten nginx_vhosts-Eintrag, der ein | verwendet, um einen Block von Syntax für die extra_parameters zu deklarieren.

Bitte beachten Sie die Einrückung im obigen Block. Die erste Zeile sollte mit einem normalen 2-Leerzeichen-Indent versehen sein. Alle anderen Zeilen sollten im Vergleich zu dieser Zeile normal eingerückt sein. In der generierten Datei wird der gesamte Block 4-Leerzeichen-indentiert sein. Dieser Stil sorgt dafür, dass die Konfigurationsdatei korrekt eingerückt ist.

  - listen: "80"
    server_name: "example.com www.example.com"
    return: "301 https://example.com$request_uri"
    filename: "example.com.80.conf"

Ein Beispiel für einen sekundären vhost, der auf den oben gezeigten umleitet.

Hinweis: Der filename wird standardmäßig auf die erste Domain in server_name gesetzt. Wenn Sie zwei vhosts mit derselben Domain haben, z.B. eine Weiterleitung, müssen Sie den filename manuell setzen, damit der zweite den ersten nicht überschreibt.

nginx_remove_default_vhost: false

Ob die 'default'-Virtualhost-Konfiguration, die von Nginx bereitgestellt wird, entfernt werden soll. Nützlich, wenn Sie die Basis-/-URL auf einen Ihrer eigenen virtuellen Hosts, die in einer separaten .conf-Datei konfiguriert sind, umleiten möchten.

nginx_upstreams: []

Wenn Sie Nginx als Lastenausgleich konfigurieren, können Sie mit dieser Variable ein oder mehrere Upstream-Sets definieren. Neben der Definition von mindestens einem Upstream müssten Sie eines Ihrer Server-Blöcke so konfigurieren, dass Anforderungen über den definierten Upstream weitergeleitet werden (z. B. proxy_pass http://myapp1;). Siehe das kommentierte Beispiel in defaults/main.yml für weitere Informationen.

nginx_user: "nginx"

Der Benutzer, unter dem Nginx läuft. Standardmäßig nginx für RedHat, www-data für Debian und www auf FreeBSD und OpenBSD.

nginx_worker_processes: "{{ ansible_processor_vcpus|default(ansible_processor_count) }}"
nginx_worker_connections: "1024"
nginx_multi_accept: "off"

nginx_worker_processes sollte auf die Anzahl der Kerne auf Ihrer Maschine eingestellt werden (wenn der Standardwert falsch ist, finden Sie diese Zahl mit grep processor /proc/cpuinfo | wc -l). nginx_worker_connections ist die Anzahl der Verbindungen pro Prozess. Erhöhen Sie diesen Wert, um mehr gleichzeitige Verbindungen zu verwalten (und denken Sie daran, dass eine Verbindung so lange verwendet wird, wie die Keepalive-Timeout-Dauer für jeden Client!). Sie können nginx_multi_accept auf on setzen, wenn Sie möchten, dass Nginx sofort alle Verbindungen akzeptiert.

nginx_error_log: "/var/log/nginx/error.log warn"
nginx_access_log: "/var/log/nginx/access.log main buffer=16k"

Konfiguration der Standardfehler- und Zugriffsprotokolle. Setzen Sie auf off, um ein Protokoll vollständig zu deaktivieren.

nginx_sendfile: "on"
nginx_tcp_nopush: "on"
nginx_tcp_nodelay: "on"

TCP-Verbindungsoptionen. Siehe diesen Blogbeitrag für weitere Informationen zu diesen Direktiven.

nginx_keepalive_timeout: "65"
nginx_keepalive_requests: "100"

Einstellungen für Nginx-Keepalive. Der Timeout sollte höher (über 10s) eingestellt werden, wenn Sie mehr Umfrage-Traffic haben (insbesondere AJAX-Websites), oder niedriger (<10s), wenn Sie eine Website haben, auf der die meisten Benutzer nur einige Seiten besuchen und keine weiteren Anforderungen senden.

nginx_server_tokens: "on"

Einstellungen für Nginx-Server-Token. Bestimmt, ob Nginx seine Version in den HTTP-Headern beantwortet. Auf "off" setzen, um dies zu deaktivieren.

nginx_client_max_body_size: "64m"

Dieser Wert bestimmt die größte mögliche Datei, die hochgeladen werden kann, da Uploads über Nginx geleitet werden, bevor sie ein Backend wie php-fpm erreichen. Wenn Sie einen Fehler wie client intended to send too large body erhalten, bedeutet dies, dass dieser Wert zu niedrig eingestellt ist.

nginx_server_names_hash_bucket_size: "64"

Wenn Sie viele Servernamen haben oder sehr lange Servernamen verwenden, könnten Sie beim Start von Nginx einen Fehler erhalten, der erfordert, dass dieser Wert erhöht wird.

nginx_proxy_cache_path: ""

Setzen Sie dies als die proxy_cache_path-Direktive in der nginx.conf. Standardmäßig wird dies nicht konfiguriert (wenn als leerer String belassen), aber wenn Sie Nginx als Reverse-Proxy verwenden möchten, können Sie dies auf einen gültigen Wert setzen (z. B. "/var/cache/nginx keys_zone=cache:32m"), um den Cache von Nginx zu verwenden (weitere Proxy-Konfigurationen können in den einzelnen Serverkonfigurationen vorgenommen werden).

nginx_extra_http_options: ""

Zusätzliche Zeilen, die in den obersten http-Block in nginx.conf eingefügt werden. Der Wert sollte wörtlich definiert werden (wie Sie es direkt in die nginx.conf einfügen würden, unter Einhaltung der Nginx-Konfigurationssyntax - wie ; zur Zeilenabschlusserkennung usw.), zum Beispiel:

nginx_extra_http_options: |
  proxy_buffering    off;
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   X-Scheme $scheme;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header   Host $http_host;

Siehe die Vorlage in templates/nginx.conf.j2 für weitere Einzelheiten zur Platzierung.

nginx_extra_conf_options: ""

Zusätzliche Zeilen, die oben in der nginx.conf eingefügt werden. Der Wert sollte wörtlich definiert werden, analog zu dem, wie Sie es direkt in die nginx.conf einfügen würden, unter Einhaltung der Nginx-Konfigurationssyntax - wie ; zur Zeilenabschlusserkennung usw., zum Beispiel:

nginx_extra_conf_options: |
  worker_rlimit_nofile 8192;

Siehe die Vorlage in templates/nginx.conf.j2 für weitere Einzelheiten zur Platzierung.

nginx_log_format: |
  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"'

Konfiguriert das log_format von Nginx.

nginx_default_release: ""

(Nur für Debian/Ubuntu) Erlaubt es Ihnen, ein anderes Repository für die Installation von Nginx festzulegen. Wenn Sie beispielsweise die Debian-Version Wheezy verwenden und eine neuere Version von Nginx installieren möchten, können Sie das wheezy-backports-Repository installieren und diesen Wert hier festlegen. Ansible wird dies als die -t-Option beim Installieren von Nginx verwenden.

nginx_ppa_use: false
nginx_ppa_version: stable

(Nur für Ubuntu) Ermöglicht die Verwendung der offiziellen Nginx PPA anstelle des Systempakets. Sie können die Version auf stable oder development setzen.

nginx_yum_repo_enabled: true

(Nur für RedHat/CentOS) Setzen Sie dies auf false, um die Installation des nginx-Yum-Repositorys zu deaktivieren. Dies kann erforderlich sein, wenn Sie die stabilen Pakete des Betriebssystems verwenden möchten oder wenn Sie Satellite verwenden.

Überschreiben von Konfigurationstemplates

Wenn Sie nicht über Variablen anpassen können, weil eine Option nicht verfügbar ist, können Sie die Vorlage, die zur Generierung der Virtualhost-Konfigurationsdateien oder der nginx.conf verwendet wird, überschreiben.

nginx_conf_template: "nginx.conf.j2"
nginx_vhost_template: "vhost.j2"

Wenn nötig, können Sie die Vorlage auch für jeden vhost individuell festlegen.

nginx_vhosts:
  - listen: "80 default_server"
    server_name: "site1.example.com"
    root: "/var/www/site1.example.com"
    index: "index.php index.html index.htm"
    template: "{{ playbook_dir }}/templates/site1.example.com.vhost.j2"
  - server_name: "site2.example.com"
    root: "/var/www/site2.example.com"
    index: "index.php index.html index.htm"
    template: "{{ playbook_dir }}/templates/site2.example.com.vhost.j2"

Sie können entweder die bereitgestellte Vorlage kopieren und ändern oder sie mit Jinja2-Vorlagenvererbung erweitern und den spezifischen Vorlagenblock überschreiben, den Sie ändern möchten.

Beispiel: Gzip in der Nginx-Konfiguration konfigurieren

Setzen Sie die nginx_conf_template auf eine Vorlagendatei in Ihrem Playbook-Verzeichnis.

nginx_conf_template: "{{ playbook_dir }}/templates/nginx.conf.j2"

Erstellen Sie die untergeordnete Vorlage im oben konfigurierten Pfad und erweitern Sie die Vorlage von geerlingguy.nginx relativ zu Ihrer playbook.yml.

{% extends 'roles/geerlingguy.nginx/templates/nginx.conf.j2' %}

{% block http_gzip %}
    gzip on;
    gzip_proxied any;
    gzip_static on;
    gzip_http_version 1.0;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/xml+rss
        application/xhtml+xml
        application/x-font-ttf
        application/x-font-opentype
        image/svg+xml
        image/x-icon;
    gzip_buffers 16 8k;
    gzip_min_length 512;
{% endblock %}

Abhängigkeiten

Keine.

Beispiel-Playbook

- hosts: server
  roles:
    - { role: geerlingguy.nginx }

Lizenz

MIT / BSD

Autor-Information

Diese Rolle wurde 2014 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps.

Über das Projekt

Nginx installation for Linux, FreeBSD and OpenBSD.

Installieren
ansible-galaxy install Shir0kamii.ansible_role_nginx
GitHub Repository
Lizenz
mit
Downloads
76