Refactor templating
* Add more advanced HTTP templating options * Let users choose the upload destination when uploading files * Implement the ability to print your NGINX configuration to your terminal after running a playbook
This commit is contained in:
parent
44a74aad75
commit
13a847234e
@ -3,6 +3,9 @@
|
|||||||
# Default is true.
|
# Default is true.
|
||||||
nginx_enable: true
|
nginx_enable: true
|
||||||
|
|
||||||
|
# Print NGINX configuration file to terminal after executing playbook.
|
||||||
|
nginx_debug_output: false
|
||||||
|
|
||||||
# Specify which version of NGINX you want to install.
|
# Specify which version of NGINX you want to install.
|
||||||
# Options are 'opensource' or 'plus'.
|
# Options are 'opensource' or 'plus'.
|
||||||
# Default is 'opensource'.
|
# Default is 'opensource'.
|
||||||
@ -78,34 +81,108 @@ nginx_unit_modules: null
|
|||||||
# Will enable 'stub_status' in NGINX Open Source and 'status' in NGINX Plus.
|
# Will enable 'stub_status' in NGINX Open Source and 'status' in NGINX Plus.
|
||||||
# Default is false.
|
# Default is false.
|
||||||
nginx_status_enable: false
|
nginx_status_enable: false
|
||||||
|
nginx_status_port: 8080
|
||||||
|
|
||||||
# Enable NGINX Plus REST API, write access to the REST API, and NGINX Plus dashboard.
|
# Enable NGINX Plus REST API, write access to the REST API, and NGINX Plus dashboard.
|
||||||
# Requires NGINX Plus.
|
# Requires NGINX Plus.
|
||||||
# Default is false.
|
# Default is false.
|
||||||
nginx_rest_api_enable: false
|
nginx_rest_api_enable: false
|
||||||
|
nginx_rest_api_location: /etc/nginx/conf.d/api.conf
|
||||||
|
nginx_rest_api_port: 8080
|
||||||
nginx_rest_api_write: false
|
nginx_rest_api_write: false
|
||||||
nginx_rest_api_dashboard: false
|
nginx_rest_api_dashboard: false
|
||||||
|
|
||||||
# Enable uploading NGINX configuration files to your system.
|
# Enable uploading NGINX configuration files to your system.
|
||||||
# Default for uploading files is false.
|
# Default for uploading files is false.
|
||||||
# Default location of files is the files folder within the NGINX Ansible role.
|
# Default location of files is the files folder within the NGINX Ansible role.
|
||||||
nginx_main_push_enable: false
|
# Upload the main NGINX configuration file.
|
||||||
nginx_main_push_location: conf/nginx.conf
|
nginx_main_upload_enable: false
|
||||||
nginx_http_push_enable: false
|
nginx_main_upload_src: conf/nginx.conf
|
||||||
nginx_http_push_location: conf/http/*.conf
|
nginx_main_upload_dest: /etc/nginx
|
||||||
nginx_stream_push_enable: false
|
# Upload HTTP NGINX configuration files.
|
||||||
nginx_stream_push_location: conf/stream/*.conf
|
nginx_http_upload_enable: false
|
||||||
|
nginx_http_upload_src: conf/http/*.conf
|
||||||
|
nginx_http_upload_dest: /etc/nginx/conf.d
|
||||||
|
# Upload Stream NGINX configuration files.
|
||||||
|
nginx_stream_upload_enable: false
|
||||||
|
nginx_stream_upload_src: conf/stream/*.conf
|
||||||
|
nginx_stream_upload_dest: /etc/nginx/conf.d
|
||||||
|
# Upload HTML files.
|
||||||
|
nginx_html_upload_enable: false
|
||||||
|
nginx_html_upload_src: www/*
|
||||||
|
nginx_html_upload_dest: /usr/share/nginx/html
|
||||||
|
# Upload SSL certificates and keys.
|
||||||
|
nginx_ssl_upload_enable: false
|
||||||
|
nginx_ssl_crt_upload_src: ssl/*.crt
|
||||||
|
nginx_ssl_crt_upload_dest: /etc/ssl/certs/
|
||||||
|
nginx_ssl_key_upload_src: ssl/*.key
|
||||||
|
nginx_ssl_key_upload_dest: /etc/ssl/private/
|
||||||
|
|
||||||
# Configuration variables to create a templated NGINX configuration.
|
# Enable crating dynamic templated NGINX HTMK demo websites.
|
||||||
|
nginx_html_demo_template_enable: false
|
||||||
|
nginx_html_demo_template:
|
||||||
|
default:
|
||||||
|
template_file: www/index.html.j2
|
||||||
|
html_file_name: index.html
|
||||||
|
html_file_location: /usr/share/nginx/html
|
||||||
|
app_name: default
|
||||||
|
|
||||||
|
# Enable creating dynamic templated NGINX configuration files.
|
||||||
# Defaults are the values found in a fresh NGINX installation.
|
# Defaults are the values found in a fresh NGINX installation.
|
||||||
nginx_main_template_enable: false
|
nginx_main_template_enable: false
|
||||||
nginx_main_template_user: nginx
|
nginx_main_template:
|
||||||
nginx_main_template_worker_processes: auto
|
template_file: nginx.conf.j2
|
||||||
nginx_main_template_error_level: warn
|
conf_file_name: nginx.conf
|
||||||
nginx_main_template_worker_connections: 1024
|
conf_file_location: /etc/nginx/
|
||||||
|
user: nginx
|
||||||
|
worker_processes: auto
|
||||||
|
error_level: warn
|
||||||
|
worker_connections: 1024
|
||||||
|
http_enable: true
|
||||||
|
http_settings:
|
||||||
|
keepalive_timeout: 65
|
||||||
|
cache: false
|
||||||
|
rate_limit: false
|
||||||
|
keyval: false
|
||||||
|
stream_enable: false
|
||||||
|
|
||||||
|
# Enable creating dynamic templated NGINX HTTP configuration files.
|
||||||
|
# Defaults will not produce a valid configuration. Instead they are meant to showcase
|
||||||
|
# the options available for templating. Each key represents a new configuration file.
|
||||||
|
# Comment out load_balancer or web_server depending on whether you wish to create a web server
|
||||||
|
# or load balancer configuration file.
|
||||||
nginx_http_template_enable: false
|
nginx_http_template_enable: false
|
||||||
nginx_http_template_keepalive_timeout: 65
|
nginx_http_template:
|
||||||
nginx_http_template_listen: 80
|
default:
|
||||||
nginx_http_template_server_name: localhost
|
template_file: http/default.conf.j2
|
||||||
|
conf_file_name: default.conf
|
||||||
|
conf_file_location: /etc/nginx/conf.d/
|
||||||
|
port: 8081
|
||||||
|
server_name: localhost
|
||||||
|
error_page: /usr/share/nginx/html
|
||||||
|
ssl:
|
||||||
|
cert: ssl/default.crt
|
||||||
|
key: ssl/default.key
|
||||||
|
web_server:
|
||||||
|
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
|
||||||
|
upstreams:
|
||||||
|
upstream1:
|
||||||
|
name: backend
|
||||||
|
lb_method: least_conn
|
||||||
|
zone_name: backend
|
||||||
|
zone_size: 64k
|
||||||
|
sticky_cookie: false
|
||||||
|
servers:
|
||||||
|
server1:
|
||||||
|
address: localhost
|
||||||
|
port: 8081
|
||||||
|
weight: 1
|
||||||
|
|
||||||
|
# Enable creating dynamic templated NGINX stream configuration files.
|
||||||
nginx_stream_template_enable: false
|
nginx_stream_template_enable: false
|
||||||
nginx_stream_template_listen: 12345
|
nginx_stream_template_listen: 12345
|
||||||
|
0
files/ssl/.gitkeep
Normal file
0
files/ssl/.gitkeep
Normal file
0
files/www/.gitkeep
Normal file
0
files/www/.gitkeep
Normal file
9
tasks/conf/debug-output.yml
Normal file
9
tasks/conf/debug-output.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: "(Setup: All OSs) Register NGINX configuration"
|
||||||
|
command: nginx -T
|
||||||
|
changed_when: false
|
||||||
|
register: nginx_configuration
|
||||||
|
|
||||||
|
- name: "(Setup: All OSs) Print NGINX configuration"
|
||||||
|
debug:
|
||||||
|
var: nginx_configuration.stdout_lines
|
@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
- name: "(Setup: All NGINX) Upload NGINX Main Configuration File"
|
|
||||||
copy:
|
|
||||||
src: "{{ nginx_main_push_location }}"
|
|
||||||
dest: /etc/nginx/nginx.conf
|
|
||||||
backup: yes
|
|
||||||
notify: "(Handler: All OSs) Reload NGINX"
|
|
||||||
when: nginx_main_push_enable
|
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Ensure NGINX HTTP Directory Exists"
|
|
||||||
file:
|
|
||||||
path: /etc/nginx/conf.d/http
|
|
||||||
state: directory
|
|
||||||
when: nginx_http_push_enable
|
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Upload NGINX HTTP Configuration Files"
|
|
||||||
copy:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: /etc/nginx/conf.d/http
|
|
||||||
backup: yes
|
|
||||||
with_fileglob:
|
|
||||||
- "{{ nginx_http_push_location }}"
|
|
||||||
notify: "(Handler: All OSs) Reload NGINX"
|
|
||||||
when: nginx_http_push_enable
|
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Ensure NGINX Stream Directory Exists"
|
|
||||||
file:
|
|
||||||
path: /etc/nginx/conf.d/stream
|
|
||||||
state: directory
|
|
||||||
when: nginx_stream_push_enable
|
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Upload NGINX Stream Configuration Files"
|
|
||||||
copy:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: /etc/nginx/conf.d/stream
|
|
||||||
backup: yes
|
|
||||||
with_fileglob:
|
|
||||||
- "{{ nginx_stream_push_location }}"
|
|
||||||
notify: "(Handler: All OSs) Reload NGINX"
|
|
||||||
when: nginx_stream_push_enable
|
|
@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: "(Setup: NGINX Plus) Setup NGINX Plus API"
|
- name: "(Setup: NGINX Plus) Setup NGINX Plus API"
|
||||||
blockinfile:
|
blockinfile:
|
||||||
path: "{{ (nginx_http_template_enable) | ternary('/etc/nginx/conf.d/http/api.conf','/etc/nginx/conf.d/api.conf') }}"
|
path: "{{ nginx_rest_api_location }}"
|
||||||
create: yes
|
create: yes
|
||||||
block: |
|
block: |
|
||||||
server {
|
server {
|
||||||
listen 8080;
|
listen {{ nginx_rest_api_port }};
|
||||||
location /api {
|
location /api {
|
||||||
{% if nginx_rest_api_write %}
|
{% if nginx_rest_api_write %}
|
||||||
api write=on;
|
api write=on;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
create: yes
|
create: yes
|
||||||
block: |
|
block: |
|
||||||
server {
|
server {
|
||||||
listen 127.0.0.1:80;
|
listen 127.0.0.1:{{ nginx_status_port }};
|
||||||
location /nginx_status {
|
location /nginx_status {
|
||||||
stub_status on;
|
stub_status on;
|
||||||
allow 127.0.0.1;
|
allow 127.0.0.1;
|
||||||
@ -21,7 +21,7 @@
|
|||||||
create: yes
|
create: yes
|
||||||
block: |
|
block: |
|
||||||
server {
|
server {
|
||||||
listen 127.0.0.1:80;
|
listen 127.0.0.1:{{ nginx_status_port }};
|
||||||
location /status {
|
location /status {
|
||||||
status;
|
status;
|
||||||
allow 127.0.0.1;
|
allow 127.0.0.1;
|
||||||
|
@ -1,25 +1,39 @@
|
|||||||
---
|
---
|
||||||
|
- name: "(Setup: All NGINX) Ensure HTML Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ item.value.html_file_location }}"
|
||||||
|
state: directory
|
||||||
|
with_dict: "{{ nginx_html_demo_template }}"
|
||||||
|
when: nginx_html_demo_template_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Dynamically Generate HTML Files"
|
||||||
|
template:
|
||||||
|
src: "{{ item.value.template_file }}"
|
||||||
|
dest: "{{ item.value.html_file_location }}/{{ item.value.html_file_name }}"
|
||||||
|
with_dict: "{{ nginx_html_demo_template }}"
|
||||||
|
when: nginx_html_demo_template_enable
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Dynamically Generate NGINX Main Configuration File"
|
- name: "(Setup: All NGINX) Dynamically Generate NGINX Main Configuration File"
|
||||||
template:
|
template:
|
||||||
src: nginx.conf.j2
|
src: "{{ nginx_main_template.template_file }}"
|
||||||
dest: /etc/nginx/nginx.conf
|
dest: "{{ nginx_main_template.conf_file_location }}/{{ nginx_main_template.conf_file_name }}"
|
||||||
backup: yes
|
backup: yes
|
||||||
when: nginx_main_template_enable
|
when: nginx_main_template_enable
|
||||||
notify: "(Handler: All OSs) Reload NGINX"
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Ensure NGINX HTTP Directory Exists"
|
- name: "(Setup: All NGINX) Ensure NGINX HTTP Directory Exists"
|
||||||
file:
|
file:
|
||||||
path: /etc/nginx/conf.d/http
|
path: "{{ item.value.conf_file_location }}"
|
||||||
state: directory
|
state: directory
|
||||||
|
with_dict: "{{ nginx_http_template }}"
|
||||||
when: nginx_http_template_enable
|
when: nginx_http_template_enable
|
||||||
|
|
||||||
- name: "(Setup: All NGINX) Dynamically Generate NGINX HTTP Configuration Files"
|
- name: "(Setup: All NGINX) Dynamically Generate NGINX HTTP Configuration Files"
|
||||||
template:
|
template:
|
||||||
src: "{{ item }}"
|
src: "{{ item.value.template_file }}"
|
||||||
dest: /etc/nginx/conf.d/http/{{ item | basename | regex_replace('\.j2','') }}
|
dest: "{{ item.value.conf_file_location }}/{{ item.value.conf_file_name }}"
|
||||||
backup: yes
|
backup: yes
|
||||||
with_fileglob:
|
with_dict: "{{ nginx_http_template }}"
|
||||||
- "../templates/http/*.j2"
|
|
||||||
when: nginx_http_template_enable
|
when: nginx_http_template_enable
|
||||||
notify: "(Handler: All OSs) Reload NGINX"
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
|
||||||
|
81
tasks/conf/upload-config.yml
Normal file
81
tasks/conf/upload-config.yml
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX Main Configuration File"
|
||||||
|
copy:
|
||||||
|
src: "{{ nginx_main_upload_src }}"
|
||||||
|
dest: "{{ nginx_main_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
when: nginx_main_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Ensure NGINX HTTP Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_http_upload_dest }}"
|
||||||
|
state: directory
|
||||||
|
when: nginx_http_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX HTTP Configuration Files"
|
||||||
|
copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ nginx_http_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
with_fileglob: "{{ nginx_http_upload_src }}"
|
||||||
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
when: nginx_http_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Ensure NGINX Stream Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_stream_upload_dest }}"
|
||||||
|
state: directory
|
||||||
|
when: nginx_stream_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX Stream Configuration Files"
|
||||||
|
copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ nginx_stream_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
with_fileglob: "{{ nginx_stream_upload_src }}"
|
||||||
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
when: nginx_stream_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Ensure NGINX HTML Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_html_upload_dest }}"
|
||||||
|
state: directory
|
||||||
|
when: nginx_html_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX HTML Files"
|
||||||
|
copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ nginx_html_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
with_fileglob: "{{ nginx_html_upload_src }}"
|
||||||
|
notify: "(Handler: All OSs) Reload NGINX"
|
||||||
|
when: nginx_html_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Ensure SSL Certificate Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_ssl_crt_upload_dest }}"
|
||||||
|
state: directory
|
||||||
|
when: nginx_ssl_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Ensure SSL Key Directory Exists"
|
||||||
|
file:
|
||||||
|
path: "{{ nginx_ssl_key_upload_dest }}"
|
||||||
|
state: directory
|
||||||
|
when: nginx_ssl_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX SSL Certificates"
|
||||||
|
copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ nginx_ssl_crt_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
with_fileglob: "{{ nginx_ssl_crt_upload_src }}"
|
||||||
|
when: nginx_ssl_upload_enable
|
||||||
|
|
||||||
|
- name: "(Setup: All NGINX) Upload NGINX SSL Keys"
|
||||||
|
copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ nginx_ssl_key_upload_dest }}"
|
||||||
|
backup: yes
|
||||||
|
with_fileglob: "{{ nginx_ssl_key_upload_src }}"
|
||||||
|
when: nginx_ssl_upload_enable
|
@ -19,8 +19,8 @@
|
|||||||
- import_tasks: modules/install-modules.yml
|
- import_tasks: modules/install-modules.yml
|
||||||
when: true in nginx_modules.values()
|
when: true in nginx_modules.values()
|
||||||
|
|
||||||
- import_tasks: conf/push-config.yml
|
- import_tasks: conf/upload-config.yml
|
||||||
when: nginx_main_push_enable or nginx_http_push_enable or nginx_stream_push_enable
|
when: nginx_main_upload_enable or nginx_http_upload_enable or nginx_stream_upload_enable or nginx_html_upload_enable or nginx_ssl_upload_enable
|
||||||
|
|
||||||
- import_tasks: conf/template-config.yml
|
- import_tasks: conf/template-config.yml
|
||||||
when: nginx_main_template_enable or nginx_http_template_enable or nginx_stream_template_enable
|
when: nginx_main_template_enable or nginx_http_template_enable or nginx_stream_template_enable
|
||||||
@ -29,7 +29,10 @@
|
|||||||
when: nginx_status_enable
|
when: nginx_status_enable
|
||||||
|
|
||||||
- import_tasks: conf/setup-rest-api.yml
|
- import_tasks: conf/setup-rest-api.yml
|
||||||
when: nginx_rest_api_enable and nginx_type == "plus"
|
when: nginx_rest_api_enable
|
||||||
|
|
||||||
|
- import_tasks: conf/debug-output.yml
|
||||||
|
when: nginx_debug_output
|
||||||
|
|
||||||
when: nginx_enable
|
when: nginx_enable
|
||||||
|
|
||||||
|
@ -9,5 +9,5 @@
|
|||||||
src: "{{ item }}"
|
src: "{{ item }}"
|
||||||
dest: /etc/ssl/nginx
|
dest: /etc/ssl/nginx
|
||||||
with_items:
|
with_items:
|
||||||
- "{{ license.certificate }}"
|
- "{{ nginx_license.certificate }}"
|
||||||
- "{{ license.key }}"
|
- "{{ nginx_license.key }}"
|
||||||
|
@ -1,44 +1,64 @@
|
|||||||
server {
|
{% if item.value.upstreams is defined %}
|
||||||
listen {{ nginx_http_template_listen }};
|
{% for upstream in item.value.upstreams %}
|
||||||
server_name {{ nginx_http_template_server_name }};
|
upstream {{ item.value.upstreams[upstream].name }} {
|
||||||
|
{{ item.value.upstreams[upstream].lb_method }};
|
||||||
#charset koi8-r;
|
zone {{ item.value.upstreams[upstream].zone_name }} {{ item.value.upstreams[upstream].zone_size }};
|
||||||
#access_log /var/log/nginx/host.access.log main;
|
{% for server in item.value.upstreams[upstream].servers %}
|
||||||
|
server {{ item.value.upstreams[upstream].servers[server].address }}:{{ item.value.upstreams[upstream].servers[server].port }} weight={{ item.value.upstreams[upstream].servers[server].weight|default("1") }};
|
||||||
location / {
|
{% endfor %}
|
||||||
root /usr/share/nginx/html;
|
{% if item.value.upstreams[upstream].sticky_cookie %}
|
||||||
index index.html index.htm;
|
sticky cookie srv_id expires=1h path=/;
|
||||||
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
#error_page 404 /404.html;
|
server {
|
||||||
|
{% if item.value.ssl is defined %}
|
||||||
|
listen 443 ssl;
|
||||||
|
ssl_certificate /etc/ssl/certs/{{ item.value.ssl.cert }};
|
||||||
|
ssl_certificate_key /etc/ssl/private/{{ item.value.ssl.key }};
|
||||||
|
{% else %}
|
||||||
|
listen {{ item.value.port }};
|
||||||
|
{% endif %}
|
||||||
|
server_name {{ item.value.server_name }};
|
||||||
|
{% if item.value.load_balancer is defined %}
|
||||||
|
location / {
|
||||||
|
proxy_pass http://{{ item.value.load_balancer.proxy_pass }};
|
||||||
|
{% if item.value.load_balancer.health_check_plus %}
|
||||||
|
health_check;
|
||||||
|
{% endif %}
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
{% 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 }};
|
||||||
|
}
|
||||||
|
{% if item.value.web_server.http_demo_conf %}
|
||||||
|
sub_filter_once off;
|
||||||
|
sub_filter 'server_hostname' '$hostname';
|
||||||
|
sub_filter 'server_address' '$server_addr:$server_port';
|
||||||
|
sub_filter 'server_url' '$request_uri';
|
||||||
|
sub_filter 'remote_addr' '$remote_addr:$remote_port';
|
||||||
|
sub_filter 'server_date' '$time_local';
|
||||||
|
sub_filter 'client_browser' '$http_user_agent';
|
||||||
|
sub_filter 'request_id' '$request_id';
|
||||||
|
sub_filter 'nginx_version' '$nginx_version';
|
||||||
|
sub_filter 'document_root' '$document_root';
|
||||||
|
sub_filter 'proxied_for_ip' '$http_x_forwarded_for';
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if item.value.error_page is defined %}
|
||||||
# redirect server error pages to the static page /50x.html
|
# redirect server error pages to the static page /50x.html
|
||||||
#
|
#
|
||||||
error_page 500 502 503 504 /50x.html;
|
error_page 500 502 503 504 /50x.html;
|
||||||
location = /50x.html {
|
location = /50x.html {
|
||||||
root /usr/share/nginx/html;
|
root {{ item.value.error_page }};
|
||||||
}
|
}
|
||||||
|
{% endif %}
|
||||||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
|
||||||
#
|
|
||||||
#location ~ \.php$ {
|
|
||||||
# proxy_pass http://127.0.0.1;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
|
||||||
#
|
|
||||||
#location ~ \.php$ {
|
|
||||||
# root html;
|
|
||||||
# fastcgi_pass 127.0.0.1:9000;
|
|
||||||
# fastcgi_index index.php;
|
|
||||||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
|
||||||
# include fastcgi_params;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# deny access to .htaccess files, if Apache's document root
|
|
||||||
# concurs with nginx's one
|
|
||||||
#
|
|
||||||
#location ~ /\.ht {
|
|
||||||
# deny all;
|
|
||||||
#}
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
user {{ nginx_main_template_user }};
|
user {{ nginx_main_template.user }};
|
||||||
worker_processes {{ nginx_main_template_worker_processes }};
|
worker_processes {{ nginx_main_template.worker_processes }};
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log {{ nginx_main_template_error_level }};
|
error_log /var/log/nginx/error.log {{ nginx_main_template.error_level }};
|
||||||
pid /var/run/nginx.pid;
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections {{ nginx_main_template_worker_connections }};
|
worker_connections {{ nginx_main_template.worker_connections }};
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if nginx_http_template_enable %}
|
{% if nginx_main_template.http_enable %}
|
||||||
http {
|
http {
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
@ -23,15 +23,24 @@ http {
|
|||||||
sendfile on;
|
sendfile on;
|
||||||
#tcp_nopush on;
|
#tcp_nopush on;
|
||||||
|
|
||||||
keepalive_timeout {{ nginx_http_template_keepalive_timeout }};
|
keepalive_timeout {{ nginx_main_template.http_settings.keepalive_timeout }};
|
||||||
|
|
||||||
#gzip on;
|
#gzip on;
|
||||||
|
{% if nginx_main_template.http_settings.cache %}
|
||||||
include /etc/nginx/conf.d/http/*.conf;
|
proxy_cache_path /tmp/cache keys_zone=one:10m;
|
||||||
|
{% endif %}
|
||||||
|
{% if nginx_main_template.http_settings.rate_limit %}
|
||||||
|
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
|
||||||
|
{% endif %}
|
||||||
|
{% if nginx_main_template.http_settings.keyval %}
|
||||||
|
keyval_zone zone={{nginx_main_template.http_settings.keyval.zone}}:32k state=one.keyval;
|
||||||
|
keyval $arg_text $text zone=one;
|
||||||
|
{% endif %}
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if nginx_stream_template_enable %}
|
{% if nginx_main_template.stream_enable %}
|
||||||
stream {
|
stream {
|
||||||
include /etc/nginx/conf.d/stream/*.conf;
|
include /etc/nginx/conf.d/stream/*.conf;
|
||||||
}
|
}
|
||||||
|
101
templates/www/index.html.j2
Normal file
101
templates/www/index.html.j2
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Hello World - App {{ item.value.name }}</title>
|
||||||
|
<link href="data:image/png;base64,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" rel="icon" type="image/png" />
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 0px;
|
||||||
|
font: 20px 'RobotoRegular', Arial, sans-serif;
|
||||||
|
font-weight: 100;
|
||||||
|
height: 100%;
|
||||||
|
color: #0f1419;
|
||||||
|
background-color: {{ item.value.name }};
|
||||||
|
}
|
||||||
|
div.info {
|
||||||
|
display: table;
|
||||||
|
background: #e8eaec;
|
||||||
|
padding: 20px 20px 20px 20px;
|
||||||
|
border: 1px dashed black;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 0px auto auto auto;
|
||||||
|
}
|
||||||
|
div.info p {
|
||||||
|
display: table-row;
|
||||||
|
margin: 5px auto auto auto;
|
||||||
|
}
|
||||||
|
div.info p span {
|
||||||
|
display: table-cell;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 176px;
|
||||||
|
margin: 36px auto 36px auto;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
div.smaller p span {
|
||||||
|
color: #3D5266;
|
||||||
|
}
|
||||||
|
h1, h2 {
|
||||||
|
font-weight: 100;
|
||||||
|
}
|
||||||
|
div.check {
|
||||||
|
padding: 0px 0px 0px 0px;
|
||||||
|
display: table;
|
||||||
|
margin: 36px auto auto auto;
|
||||||
|
font: 12px 'RobotoRegular', Arial, sans-serif;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 36px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
#center {
|
||||||
|
width: 400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
font: 18px Courier;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
var ref;
|
||||||
|
function checkRefresh(){
|
||||||
|
if (document.cookie == "refresh=1") {
|
||||||
|
document.getElementById("check").checked = true;
|
||||||
|
ref = setTimeout(function(){location.reload();}, 1000);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function changeCookie() {
|
||||||
|
if (document.getElementById("check").checked) {
|
||||||
|
document.cookie = "refresh=1";
|
||||||
|
ref = setTimeout(function(){location.reload();}, 1000);
|
||||||
|
} else {
|
||||||
|
document.cookie = "refresh=0";
|
||||||
|
clearTimeout(ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="checkRefresh();">
|
||||||
|
<img alt="NGINX Logo" src="data:image/png;base64,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"/>
|
||||||
|
<div class="info">
|
||||||
|
<p><span>Web Server name:</span> <span> {{ item.value.name }} </span></p>
|
||||||
|
<p><span>Server name:</span> <span> {{ ansible_hostname }} </span></p>
|
||||||
|
<p><span>Server address:</span> <span> {{ ansible_eth0.ipv4.address }} </span></p>
|
||||||
|
<p><span>User Agent:</span> <span><small>client_browser</small></span></p>
|
||||||
|
<p class="smaller"><span>URI:</span> <span>server_url</span></p>
|
||||||
|
<p class="smaller"><span>Doc Root:</span> <span>document_root</span></p>
|
||||||
|
<p class="smaller"><span>Date:</span> <span>server_date</span></p>
|
||||||
|
<p class="smaller"><span>NGINX Front-End Load Balancer IP:</span><span>remote_addr</span></p>
|
||||||
|
<p class="smaller"><span>Client IP:</span> <span>proxied_for_ip</span></p>
|
||||||
|
<p class="smaller"><span>NGINX Version:</span> <span>nginx_version</span></p>
|
||||||
|
</div>
|
||||||
|
<div class="check"><input type="checkbox" id="check" onchange="changeCookie()"> Auto Refresh</div>
|
||||||
|
<div id="footer">
|
||||||
|
<div id="center" align="center">
|
||||||
|
Request ID: request_id<br/>
|
||||||
|
© NGINX, Inc. 2018
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -5,7 +5,7 @@
|
|||||||
roles:
|
roles:
|
||||||
- ansible-role-nginx
|
- ansible-role-nginx
|
||||||
vars:
|
vars:
|
||||||
nginx_main_push_enable: true
|
nginx_main_upload_enable: true
|
||||||
nginx_main_push_location: ../files/nginx.conf
|
nginx_main_upload_src: ../files/nginx.conf
|
||||||
nginx_http_push_enable: true
|
nginx_http_upload_enable: true
|
||||||
nginx_http_push_location: ../files/http/*.conf
|
nginx_http_upload_src: ../files/http/*.conf
|
||||||
|
@ -6,5 +6,15 @@
|
|||||||
- ansible-role-nginx
|
- ansible-role-nginx
|
||||||
vars:
|
vars:
|
||||||
nginx_http_template_enable: true
|
nginx_http_template_enable: true
|
||||||
nginx_http_template_keepalive_timeout: 70
|
nginx_http_template:
|
||||||
nginx_http_template_listen: 82
|
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:
|
||||||
|
html_file_location: /usr/share/nginx/html
|
||||||
|
html_file_name: index.html
|
||||||
|
http_demo_conf: false
|
||||||
|
Loading…
Reference in New Issue
Block a user