marvinpinto.docker-nginx
docker-nginx
用于管理和运行 nginx docker 容器的 Ansible 角色。
要求
此角色仅在 Ubuntu 14.04 上进行了测试。由于它使用了 Ansible 的 docker 模块,您需要确保安装了较新版本的 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
在 playbook 中按如下方式使用,假设您已经设置了 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 的 playbook,请查看 marvinpinto.docker Galaxy 角色。
需要配置的内容
nginx_reverse_proxy_proxies
:反向代理配置列表;每个配置需要以下变量nginx_reverse_proxy_backend_name:
字符串,nginx 配置中用于引用后端的名称nginx_reverse_proxy_domains
:需要进行代理的公网域名列表nginx_reverse_proxy_backends
:后端服务器列表,包括端口和 nginx 配置文件中upstream
上下文的其他有效参数nginx_reverse_proxy_config_name
:用于代理文件的名称(不要包含 '.conf' 扩展名,角色会自动添加)
示例 Playbook
---
# 文件 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; # 重要的在结尾添加分号;如果没有,配置将会出错
许可证
作者信息
- Marvin Pinto
合作者
- Pablo Estigarribia (pablodav at gmail)
更多文档
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 添加,请确保服务器可以在启动 nginx 之前解析 DNS 名称。 如果 nginx 无法解析 DNS 名称,它将无法启动。
开发者
帮助自动测试此角色: https://github.com/CoffeeITWorks/ansible-generic-help/blob/master/Developers.md