marvinpinto.docker-nginx
docker-nginx
nginxのDockerコンテナを管理し実行するためのAnsibleロールです。
要件
このロールはUbuntu 14.04でのみテストされています。このロールはAnsibleのdockerモジュールを使用しているため、docker-py
とdocker
の最近のバージョンがインストールされていることを確認する必要があります。
依存関係ロール(geerlingguy.docker)をインストールするために、tests/requirements.ymlを使用します。
また、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
: バックエンドサーバーのリスト(ポートを含む)およびnginx設定ファイルのupstream
コンテキストでのserver
の他の有効なパラメータnginx_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 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