marvinpinto.docker-nginx
docker-nginx
Rola Ansible do zarządzania i uruchamiania kontenera docker z nginx.
Wymagania
Ta rola była testowana tylko na systemie Ubuntu 14.04. Ponieważ korzysta z modułu docker Ansible, upewnij się, że masz zainstalowane aktualne wersje docker-py
i docker
.
Używamy tests/requirements.yml do zainstalowania zależności: geerlingguy.docker
Możesz również użyć ansible-galaxy install -r tests/requirements.yml
lub lepiej dodać ten sam zawartość do własnego pliku requirements.yml
w swoim repozytorium.
Przykłady
Zainstaluj tę rolę z Ansible Galaxy do katalogu './roles':
ansible-galaxy install marvinpinto.docker-nginx -p ./roles
Użyj jej w playbooku w następujący sposób, zakładając, że masz już zainstalowany docker:
- hosts: 'serwery'
roles:
- role: geerlingguy.docker # Możesz użyć dowolnej innej roli do zainstalowania dockera, ale docker jest wymagany (patrz powyżej)
- role: 'marvinpinto.docker-nginx'
become: yes
nginx_conf: |
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
Sprawdź defaults/main.yml w celu poznania zmiennych roli, które można nadpisać! Jeśli potrzebujesz playbooka do ustawienia samego Dockera, zerknij na rolę marvinpinto.docker w Galaxy.
Oczekiwane do skonfigurowania
nginx_reverse_proxy_proxies
: lista konfiguracji proxy odwrotnego; każda konfiguracja potrzebuje następujących zmiennychnginx_reverse_proxy_backend_name:
napis, który nginx używa do odwołania się do backendunginx_reverse_proxy_domains
: lista domen dostępnych publicznie, które mają być proxowanenginx_reverse_proxy_backends
: lista serwerów backendowych, w tym porty i inne prawidłowe parametry dlaserver
w kontekścieupstream
w pliku konfiguracyjnym nginxnginx_reverse_proxy_config_name
: nazwa do użycia dla pliku proxy (nie dodawaj rozszerzenia '.conf', rola doda to automatycznie)
Przykład Playbooka
---
# plik group_vars/nginx_docker_proxy
nginx_reverse_proxy_proxies:
- config_name: app1proxy
backend_name: my-backend-1
backends:
- localhost:1880 weight=2
- localhost:1881
domains:
- app1.192.168.88.10.xip.io
locations:
- /path/ # W przypadku, gdy Twoja witryna jest hostowana na backend-name/path/
root_redirect_location: /path/ # W przypadku, gdy Twoja witryna jest hostowana na backend-name/path/ i potrzebujesz domyślnego przekierowania na tę stronę
- config_name: app2proxy
backend_name: my-backend-2
backends:
- localhost:1882
- localhost:1883 backup # będzie działać jako zapasowy, a nginx przesyła ruch tylko wtedy, gdy główny jest niedostępny.
domains:
- app2.192.168.88.10.xip.io
balancer_config: least_conn; # Ważne, aby dodać średnik na końcu ; jeśli nie, konfiguracja się zepsuje
Licencja
Informacje o autorze
- Marvin Pinto
Współpracownicy
- Pablo Estigarribia (pablodav at gmail)
Więcej dokumentacji
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Uwagi dotyczące ustawień nginx
Dodając backendy, jeśli wolisz je dodawać za pomocą DNS, upewnij się, że serwer może rozwiązać nazwę DNS przed uruchomieniem nginx. Jeśli nginx nie rozwiąże nazwy DNS, nie uruchomi się.
Deweloperzy
Pomoc w autotestach tej roli: https://github.com/CoffeeITWorks/ansible-generic-help/blob/master/Developers.md
ansible-galaxy install marvinpinto.docker-nginx