marvinpinto.docker-nginx

docker-nginx

构建状态

用于管理和运行 nginx docker 容器的 Ansible 角色。

要求

此角色仅在 Ubuntu 14.04 上进行了测试。由于它使用了 Ansible 的 docker 模块,您需要确保安装了较新版本的 docker-pydocker

我们使用 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; # 重要的在结尾添加分号;如果没有,配置将会出错

许可证

MIT

作者信息

  • 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

关于项目

Ansible role to manage and run the nginx docker container.

安装
ansible-galaxy install marvinpinto.docker-nginx
许可证
mit
下载
375
拥有者
Computer nerd.