Saltstack Official Apache Formula
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
3.0KB

  1. {# Define default values here so the template below can just focus on layout #}
  2. {% from "apache/map.jinja" import apache with context %}
  3. {% set sitename = site.get('ServerName', id) %}
  4. {% set vals = {
  5. 'interfaces': site.get('interface', '*').split(),
  6. 'port': site.get('port', '80'),
  7. 'ServerName': sitename,
  8. 'ServerAlias': site.get('ServerAlias', 'www.{0}'.format(sitename)),
  9. 'ServerAdmin': site.get('ServerAdmin', 'webmaster@{0}'.format(sitename)),
  10. 'UseCanonicalName': site.get('UseCanonicalName'),
  11. 'LogLevel': site.get('LogLevel', 'warn'),
  12. 'ErrorLog': site.get('ErrorLog', '{0}/{1}-error.log'.format(map.logdir, sitename)),
  13. 'LogFormat': site.get('LogFormat', '"%h %l %u %t \\\"%r\\\" %>s %O"'),
  14. 'CustomLog': site.get('CustomLog', '{0}/{1}-access.log'.format(map.logdir, sitename)),
  15. 'ProxyRequests': site.get('ProxyRequests', 'Off'),
  16. 'ProxyPreserveHost': site.get('ProxyPreserveHost', 'On'),
  17. 'ProxyRoute': site.get('ProxyRoute', {}),
  18. } %}
  19. <VirtualHost {%- for intf in vals.interfaces %} {{intf}}:{{ vals.port }}{% endfor -%}>
  20. ServerName {{ vals.ServerName }}
  21. {% if site.get('ServerAlias') != False %}ServerAlias {{ vals.ServerAlias }}{% endif %}
  22. {% if site.get('ServerAdmin') != False %}ServerAdmin {{ vals.ServerAdmin }}{% endif %}
  23. {% if site.get('UseCanonicalName') %}UseCanonicalName {{ vals.UseCanonicalName }}{% endif %}
  24. {% if site.get('LogLevel') != False %}LogLevel {{ vals.LogLevel }}{% endif %}
  25. {% if site.get('ErrorLog') != False %}ErrorLog {{ vals.ErrorLog }}{% endif %}
  26. {% if site.get('CustomLog') != False %}CustomLog {{ vals.CustomLog }} {{ vals.LogFormat }}{% endif %}
  27. {% if site.get('SSLCertificateFile') %}
  28. SSLEngine on
  29. SSLCertificateFile {{ site.SSLCertificateFile }}
  30. {% if site.get('SSLCertificateKeyFile') %}
  31. SSLCertificateKeyFile {{ site.SSLCertificateKeyFile }}
  32. {% endif %}
  33. {% if site.get('SSLCertificateChainFile') %}
  34. SSLCertificateChainFile {{ site.SSLCertificateChainFile}}
  35. {% endif %}
  36. {% endif %}
  37. ProxyRequests {{ vals.ProxyRequests }}
  38. ProxyPreserveHost {{ vals.ProxyPreserveHost }}
  39. {% for proxy, proxyargs in vals.ProxyRoute|dictsort|reverse %}
  40. {% set proxyvals = {
  41. 'ProxyPassSource': proxyargs.get('ProxyPassSource', '/'),
  42. 'ProxyPassTarget': proxyargs.get('ProxyPassTarget', 'https://{0}'.format(sitename)),
  43. 'ProxyPassTargetOptions': proxyargs.get('ProxyPassTargetOptions', ''),
  44. 'ProxyPassReverseSource': proxyargs.get('ProxyPassReverseSource', '/'),
  45. 'ProxyPassReverseTarget': proxyargs.get('ProxyPassReverseTarget', proxyargs.get('ProxyPassTarget', 'https://{0}'.format(sitename))),
  46. } %}
  47. ######### {{proxy}} #########
  48. ProxyPass {{ proxyvals.ProxyPassSource }} {{ proxyvals.ProxyPassTarget }} {{ proxyvals.ProxyPassTargetOptions }}
  49. ProxyPassReverse {{ proxyvals.ProxyPassReverseSource }} {{ proxyvals.ProxyPassReverseTarget }}
  50. {% endfor %}
  51. {% if site.get('Formula_Append') %}
  52. {{ site.Formula_Append|indent(4) }}
  53. {% endif %}
  54. </VirtualHost>