diff --git a/README.md b/README.md index 4d7a8c4..0718f2f 100644 --- a/README.md +++ b/README.md @@ -331,12 +331,18 @@ nginx_http_template: cert: ssl/default.crt key: ssl/default.key web_server: - html_file_location: /usr/share/nginx/html - html_file_name: index.html + locations: + default: + location: / + html_file_location: /usr/share/nginx/html + html_file_name: index.html http_demo_conf: false load_balancer: - proxy_pass: backend - health_check_plus: false + locations: + location1: + location: / + proxy_pass: backend + health_check_plus: false upstreams: upstream1: name: backend @@ -384,6 +390,79 @@ This is a sample playbook file for deploying the Ansible Galaxy NGINX role to a - role: nginxinc.nginx ``` +This is a sample playbook file for deploying the Ansible Galaxy NGINX role in a localhost and installing the open source version of NGINX as a simple web server. + +```yaml +--- +- hosts: localhost + become: true + roles: + - ansible-role-nginx + vars: + nginx_http_template_enable: true + nginx_http_template: + default: + template_file: http/default.conf.j2 + conf_file_name: default.conf + conf_file_location: /etc/nginx/conf.d/ + port: 80 + server_name: localhost + error_page: /usr/share/nginx/html + web_server: + locations: + default: + location: / + html_file_location: /usr/share/nginx/html + html_file_name: index.html +``` + +This is a sample playbook file for deploying the Ansible Galaxy NGINX role in a localhost and installing the open source version of NGINX as a reverse proxy. + +```yaml +--- +- hosts: localhost + become: true + roles: + - nginxinc.nginx + vars: + nginx_http_template_enable: true + nginx_http_template: + load_balancer: + locations: + frontend: + location: / + proxy_pass: frontend_servers + backend: + location: /backend + proxy_pass: backend_servers + upstreams: + upstream_1: + name: frontend_servers + lb_method: least_conn + zone_name: frontend + zone_size: 64k + sticky_cookie: false + servers: + frontend_server_1: + address: localhost + port: 80 + weight: 1 + health_check: max_fails=3 fail_timeout=5s + upstream_2: + name: backend_servers + lb_method: least_conn + zone_name: backend + zone_size: 64k + sticky_cookie: false + servers: + backend_server_1: + address: localhost + port: 8080 + weight: 1 + health_check: max_fails=3 fail_timeout=5s +``` + + This is a sample playbook file for deploying the Ansible Galaxy NGINX role in a localhost and installing NGINX Plus. ```yaml diff --git a/defaults/main.yml b/defaults/main.yml index e558f81..1f715b4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -164,11 +164,17 @@ nginx_http_template: cert: ssl/default.crt key: ssl/default.key web_server: - html_file_location: /usr/share/nginx/html - html_file_name: index.html + locations: + default: + location: / + html_file_location: /usr/share/nginx/html + html_file_name: index.html http_demo_conf: false load_balancer: - proxy_pass: backend + locations: + backend: + location: / + proxy_pass: backend health_check_plus: false upstreams: upstream1: diff --git a/templates/http/default.conf.j2 b/templates/http/default.conf.j2 index 827ad9f..a7fe9f9 100644 --- a/templates/http/default.conf.j2 +++ b/templates/http/default.conf.j2 @@ -24,8 +24,9 @@ server { {% endif %} server_name {{ item.value.server_name }}; {% if item.value.load_balancer is defined %} - location / { - proxy_pass http://{{ item.value.load_balancer.proxy_pass }}; +{% for location in item.value.load_balancer.locations %} + location {{ item.value.load_balancer.locations[location].location }} { + proxy_pass http://{{ item.value.load_balancer.locations[location].proxy_pass }}; {% if item.value.load_balancer.health_check_plus %} health_check; {% endif %} @@ -34,12 +35,16 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } + +{% endfor %} {% endif %} {% if item.value.web_server is defined %} - location / { - root {{ item.value.web_server.html_file_location }}; - index {{ item.value.web_server.html_file_name }}; +{% for location in item.value.web_server.locations %} + location {{ item.value.web_server.locations[location].location }} { + root {{ item.value.web_server.locations[location].html_file_location }}; + index {{ item.value.web_server.locations[location].html_file_name }}; } +{% endfor %} {% if item.value.web_server.http_demo_conf %} sub_filter_once off; sub_filter 'server_hostname' '$hostname'; diff --git a/tests/playbooks/nginx-template.yml b/tests/playbooks/nginx-template.yml index 841f848..daaea92 100644 --- a/tests/playbooks/nginx-template.yml +++ b/tests/playbooks/nginx-template.yml @@ -15,6 +15,9 @@ server_name: localhost error_page: /usr/share/nginx/html web_server: - html_file_location: /usr/share/nginx/html - html_file_name: index.html + locations: + default: + location: / + html_file_location: /usr/share/nginx/html + html_file_name: index.html http_demo_conf: false