Allow apache formula to set env varibles from mod_env and
mod_setenvif modules
Prod-Related: PROD-36176
Change-Id: Ibb735bf3759558677475d6f9b867efc6c7545b93
diff --git a/README.rst b/README.rst
index fb6b4ae..ced8f6f 100644
--- a/README.rst
+++ b/README.rst
@@ -186,6 +186,31 @@
limits:
request_body: 114688
+Apache environment modules (mod_env, mod_setendif).
+
+.. code-block:: yaml
+
+ apache:
+ server:
+ site:
+ horizon:
+ env:
+ passenv:
+ - variable: LC_ALL
+ enabled: False
+ setenv:
+ - variable: X-Forwarded-Proxy
+ value: somehost
+ enabled: False
+ unsetenv:
+ - variable: LC_LOCAL
+ envif:
+ browsermatch:
+ - rule: ^MSIE mozilla
+ setenvif:
+ - rule: X-Forwarded-Proto https HTTPS=1
+ enabled: False
+
Apache redirect site definition.
.. code-block:: yaml
diff --git a/apache/files/_core.conf b/apache/files/_core.conf
index 7aa0cea..f93d952 100644
--- a/apache/files/_core.conf
+++ b/apache/files/_core.conf
@@ -13,3 +13,50 @@
{%- if site.get('keepalive', {}).timeout is defined %}
KeepAliveTimeout {{ site.keepalive.timeout }}
{%- endif %}
+
+ {%- if site.env is defined %}
+ {%- for env_var in site.env.get('passenv', []) %}
+ {%- if env_var.get('enabled', True) %}
+ PassEnv {{ env_var.variable }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for env_var in site.env.get('setenv', []) %}
+ {%- if env_var.get('enabled', True) %}
+ SetEnv {{ env_var.variable }} {{ env_var.value }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for env_var in site.env.get('unsetenv', []) %}
+ {%- if env_var.get('enabled', True) %}
+ UnsetEnv {{ env_var.variable }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
+
+ {%- if site.envif is defined %}
+ {%- for envif_var in site.envif.get('browsermatch', []) %}
+ {%- if envif_var.get('enabled', True) %}
+ BrowserMatch {{ envif_var.rule }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for envif_var in site.envif.get('browsermatchnocase', []) %}
+ {%- if envif_var.get('enabled', True) %}
+ BrowserMatchNoCase {{ envif_var.rule }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for envif_var in site.envif.get('setenvif', []) %}
+ {%- if envif_var.get('enabled', True) %}
+ SetEnvIf {{ envif_var.rule }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for envif_var in site.envif.get('setenvifexpr', []) %}
+ {%- if envif_var.get('enabled', True) %}
+ SetEnvIfExpr {{ envif_var.rule }}
+ {%- endif %}
+ {%- endfor %}
+ {%- for envif_var in site.envif.get('setenvifnocase', []) %}
+ {%- if envif_var.get('enabled', True) %}
+ SetEnvIfNoCase {{ envif_var.rule }}
+ {%- endif %}
+ {%- endfor %}
+ {%- endif %}
+
diff --git a/tests/pillar/server_proxy.sls b/tests/pillar/server_proxy.sls
new file mode 100644
index 0000000..d7d2c48
--- /dev/null
+++ b/tests/pillar/server_proxy.sls
@@ -0,0 +1,40 @@
+apache:
+ server:
+ enabled: true
+ bind:
+ address: '0.0.0.0'
+ ports:
+ - 80
+ modules:
+ - proxy
+ - proxy_http
+ - proxy_balancer
+ site:
+ apache_proxy_site:
+ enabled: true
+ type: proxy
+ name: site_name
+ env:
+ passenv:
+ - variable: LC_ALL
+ enabled: False
+ setenv:
+ - variable: X-Forwarded-Proxy
+ enabled: False
+ unsetenv:
+ - variable: LC_ALL
+ envif:
+ browsermatch:
+ - rule: ^MSIE mozilla
+ enabled: False
+ setenvif:
+ - rule: X-Forwarded-Proto https HTTPS=1
+ proxy:
+ host: 127.0.0.1
+ port: 8080
+ protocol: http
+ retry: 30
+ host:
+ name: 127.0.1.1
+ port: 9001
+ address: 127.0.1.1