| {%- from "nginx/map.jinja" import server with context -%} |
| stream { |
| {% for stream_name, stream_item in server.stream.iteritems() %} |
| upstream {{ stream_name }}_upstream { |
| {%- if stream_item.least_conn is defined %} |
| least_conn; |
| {%- endif %} |
| {%- if stream_item.least_time is defined %} |
| least_time {{ stream_item.get('least_time', 'connect') }}; |
| {%- endif %} |
| {%- if stream_item.hash is defined %} |
| hash {{ stream_item.get('hash', '$remote_addr') }}; |
| {%- endif %} |
| {% for backend_name, backend_item in stream_item.get('backend', {}).iteritems() %} |
| server {{ backend_item.get('address', '127.0.0.1') }}:{{ backend_item.get('port', '31337') }} {{ backend_item.get('opts', '') }}; |
| {%- endfor %} |
| |
| } |
| {% set host = stream_item.get('host', {}) %} |
| server { |
| {% if host.bind is defined %} |
| listen {{ host.get('bind') }}:{{ host.get('port', '31337') }} {{ host.get('protocol', '') }}; |
| {%- else %} |
| listen {{ host.get('port', '31337') }} {{ host.get('protocol', '') }}; |
| {%- endif %} |
| |
| proxy_pass {{ stream_name }}_upstream; |
| |
| } |
| {% endfor %} |
| } |