%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /etc/ansible/roles/web/templates/nginx/
Upload File :
Create Path :
Current File : //etc/ansible/roles/web/templates/nginx/http_site_template_composite.conf.j2

# {{ ansible_managed }}
{% set site_name = item['SiteName'] %}
{% set site_root = item['DocumentRoot'] %}
{# test composite options #}
{% set nginx_composite = item['CompositeNginx']|default('disable') %}
{% set nginx_composite_storage = item['CompositeStorage']|default('') %}
{% set ID = item['CompositeNginxID']|default('') %}
{% set nginx_composite_mc_serv = item['CompositeMemcachedHost']|default('') %}
{% set nginx_composite_mc_port = item['CompositeMemcachedPort']|default('') %}
{% if manage_web == 'enable_composite' -%}
{% set nginx_composite = 'enable' %}
{%- elif manage_web == 'disable_composite' -%}
{% set nginx_composite = 'disable' %}
{%- endif %}
{% if ID == '' -%}
{% set nginx_composite = 'disable' %}
{%- endif %}
{# set options that depends on composite settings #}
{% if nginx_composite == 'enable' -%}
{% set nginx_include_bitrix = 'bx/conf/bitrix_general.conf' %}
{%- else -%}
{% set nginx_include_bitrix = 'bx/conf/bitrix.conf' %}
{%- endif %}
{% set vSite = '$is_site_composite_'+ID %}
{# defined options that differnet on default/first site on the server #}
{% if site_name == 'default' -%}
{% set nginx_proxy   = 'http://127.0.0.1:8888' %}
{% set nginx_listen  = 'default_server' %}
{% set nginx_srv     = '_' %}
{%- else -%}
{% set nginx_proxy   = 'http://127.0.0.1:8887' %}
{% set nginx_listen  = '' %}
{% set nginx_srv     = site_name+' www.'+site_name %}
{%- endif %}
{# defined options that different in cluster/non-cluster cases #}
{% if cluster_web_configure == 'disable' -%}
{% set nginx_port         = nginx_server_http_port %}
{% set nginx_proxy_ip     = '$remote_addr' %}
{% set nginx_proxy_host   = '$host:'+nginx_server_http_port|string %}
{% set nginx_proxy_vhost  = '$host' %}
{% set nginx_proxy_scheme = '$scheme' %}
{% set nginx_proxy_https  = '' %}
{%- else -%}
{% set nginx_port         = nginx_server_internal_port %}
{% set nginx_proxy_ip     = '$http_x_real_ip' %}
{% set nginx_proxy_host   = '$http_host' %}
{% set nginx_proxy_vhost  = '$http_x_forwarded_host' %}
{% set nginx_proxy_scheme = '$http_x_forwarded_scheme' %}
{% set nginx_proxy_https  = '$http_https' %}
{%- endif %}
###############################################################
# configuration for http-site:
# site_name:                 {{ site_name }}
# site_root:                 {{ site_root }}
# site_composite:            {{ nginx_composite }}
# site_composite_id:         {{ ID }}
# site_composite_var:        {{ vSite }}
# site_composite_storage:    {{ nginx_composite_storage }}
{% if nginx_composite_mc_serv != '' -%}
# site_composite_memcached:  {{ nginx_composite_mc_serv }}:{{ nginx_composite_mc_port }}
{% endif %}
# web_cluster:               {{ cluster_web_configure }}
###############################################################
server {
  listen {{ nginx_port }} {{ nginx_listen }};
  server_name {{ nginx_srv }};

  access_log /var/log/nginx/{{ site_name }}_access.log main;
  error_log  /var/log/nginx/{{ site_name }}_error.log warn;

  set $docroot		"{{ site_root }}";
  root            "{{ site_root }}";
  proxy_ignore_client_abort {{ item['proxy_ignore_client_abort']|default('off') }};
  index index.php;

  server_name_in_redirect off;

  set $proxyserver	"{{ nginx_proxy }}";
  proxy_set_header	X-Forwarded-For    $proxy_add_x_forwarded_for;
  proxy_set_header	X-Real-IP          {{ nginx_proxy_ip }};
  proxy_set_header	Host               {{ nginx_proxy_host }};
  proxy_set_header  X-Forwarded-Host   {{ nginx_proxy_vhost }};
  proxy_set_header  X-Forwarded-Scheme {{ nginx_proxy_scheme }};

  {% if nginx_proxy_https != '' -%}
  proxy_set_header  HTTPS {{ nginx_proxy_https }};
  {% endif %}

  {% if item.SiteName != 'default' -%}
  set $imcontenttype	"text/html; charset=utf-8";
  {% endif %}

  {% if cluster_web_configure == 'disable' -%}
  # Redirect to ssl if need
  if (-f {{ site_root }}/.htsecure) { return 301 https://$host$request_uri; }
  {% else %}
  # erase mod_zip header
  more_clear_headers 'X-Archive-*';
  {% endif %}

  {% if nginx_composite == 'enable' -%}
  {% if nginx_composite_storage in ['memcached', 'memcached_cluster'] -%}
  memcached_connect_timeout 1s;
  memcached_read_timeout 1s;
  memcached_send_timeout 1s;
  memcached_gzip_flag 65536;
  set $memcached_key "/${host}${composite_key}/index@${args}.html";
  {% else %}
  # composite variables
  set $composite_cache    "bitrix/html_pages/${host}${composite_key}/index@${args}.html";
  set $composite_file     "${docroot}/${composite_cache}";
  {% endif %}

  # config file
  set $composite_enabled  "${docroot}/bitrix/html_pages/.enabled";
  # if test pass through general tests:
  set $use_composite_cache "";
  # global site test, the same for all sites on the server
  if ($is_global_composite  = 1) {set $use_composite_cache "A";}
  # personal site tests, generated by site config
  if ({{ vSite }} = 1) {set $use_composite_cache "${use_composite_cache}B";}

  {% if item['HTTPSCertType'] == 'letsencrypt' %}
  include bx/conf/letsencrypt-challenge-tokens.conf;
  {% endif %}

  # Include parameters common to all websites
  include bx/conf/bitrix_general.conf;

  # main location with processing composite
  location / {
    {% if nginx_composite_storage in ['memcached', 'memcached_cluster'] -%}
    error_page 404 405 412 502 504 = @apache;
    {% endif %}

    if (-f $composite_enabled)     { set $use_composite_cache "${use_composite_cache}C"; }

    {% if nginx_composite_storage == 'files' -%}
    # test cache file exists
    if (-f $composite_file)  { set $use_composite_cache "${use_composite_cache}D"; }

    if ($use_composite_cache = "ABCD") { rewrite .* /$composite_cache last; }
    {% elif nginx_composite_storage in ['memcached', 'memcached_cluster'] -%}

    default_type text/html;
    # use mecached for keys
    if ($use_composite_cache = "ABC") {
      add_header X-Bitrix-Composite "Nginx (memcached)";
      memcached_pass {{ nginx_composite_mc_serv }}:{{ nginx_composite_mc_port }};
    }
    {% endif -%}
    proxy_pass $proxyserver;
  }

  {% if nginx_composite_storage in ['memcached', 'memcached_cluster'] -%}
  location @apache {
    proxy_pass $proxyserver;
  }
  {% endif %}

  {%- else -%}
  # Include parameters common to all websites
  include bx/conf/bitrix.conf;

  {%endif %}

  # Include munin and nagios web
  include bx/server_monitor.conf;
}

Zerion Mini Shell 1.0