docker-nginx
docker-nginx
Роль Ansible для управления и запуска контейнера nginx в Docker.
Требования
Эта роль протестирована только на Ubuntu 14.04. Поскольку используется модуль
docker от Ansible, убедитесь, что установлены более-менее свежие версии docker-py
и docker
.
Мы используем tests/requirements.yml для установки зависимой роли: geerlingguy.docker
Вы также можете использовать ansible-galaxy install -r tests/requirements.yml
или лучше добавить тот же контент в ваш собственный файл requirements.yml
в вашем репозитории.
Примеры
Установите этот модуль из Ansible Galaxy в директорию './roles':
ansible-galaxy install marvinpinto.docker-nginx -p ./roles
Используйте его в плейбуке следующим образом, предполагая, что у вас уже настроен Docker:
- hosts: 'servers'
roles:
- role: geerlingguy.docker # Вы можете использовать любую другую роль для установки docker, но docker является обязательным (см. выше)
- 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;
}
Посмотрите на defaults/main.yml для переменных роли, которые можно переопределить! Если вам нужен плейбук для настройки самого Docker, посмотрите на marvinpinto.docker Galaxy роль.
Ожидается, что будет настроено
nginx_reverse_proxy_proxies
: список конфигураций обратного прокси; каждая конфигурация требует следующих переменных:nginx_reverse_proxy_backend_name:
строка, имя, которое использует конфигурация nginx для ссылки на бэкэндnginx_reverse_proxy_domains
: список публичных доменов для проксированияnginx_reverse_proxy_backends
: список бэкэнд-серверов, включая порты и другие допустимые параметры дляserver
в контекстеupstream
конфигурационного файла nginxnginx_reverse_proxy_config_name
: имя для использования в файле прокси (не включайте расширение '.conf', роль добавит это автоматически)
Пример плейбука
---
# файл 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/ # Если ваш сайт размещен на backend-name/path/
root_redirect_location: /path/ # Если ваш сайт размещен на backend-name/path/ и нужно перенаправить на этот сайт по умолчанию
- config_name: app2proxy
backend_name: my-backend-2
backends:
- localhost:1882
- localhost:1883 backup # будет действовать как резервный, и nginx будет передавать трафик только когда основной недоступен.
domains:
- app2.192.168.88.10.xip.io
balancer_config: least_conn; # Важно добавить точку с запятой в конце ; если нет, конфигурация не будет работать
Лицензия
Информация об авторе
- Марвин Пинто
Сотрудники
- Пабло Эстиаррибия (pablodav@gmail.com)
Дополнительная документация
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Замечания о настройках nginx
При добавлении бэкэндов, если вы предпочитаете добавлять их с помощью DNS, убедитесь, что сервер может разрешить DNS-имя перед запуском nginx. Если nginx не может разрешить DNS-имя, он не запустится.
Разработчики
Помогите в автотестировании этой роли: https://github.com/CoffeeITWorks/ansible-generic-help/blob/master/Developers.md
ansible-galaxy install marvinpinto/ansible-role-docker-nginx