#jinja2: lstrip_blocks: "True"

server {
	listen 12080;
	server_name {{ matrix_nginx_proxy_proxy_dendrite_hostname }};

	server_tokens off;
	root /dev/null;

	gzip on;
	gzip_types text/plain application/json;

	{% for configuration_block in matrix_nginx_proxy_proxy_dendrite_additional_server_configuration_blocks %}
		{{- configuration_block }}
	{% endfor %}

	{% if matrix_nginx_proxy_proxy_dendrite_block_federation_api_on_client_port %}
	location /_matrix/federation {
		{% if matrix_nginx_proxy_proxy_dendrite_federation_api_enabled %}
			return 404 'The Federation API is served at https://{{ matrix_server_fqn_matrix }}:{{ matrix_federation_public_port }}';
		{% else %}
			return 404 'This Matrix server is running with federation disabled';
		{% endif %}
	}
	{% endif %}

	{# Everything else just goes to the API server ##}
	location / {
		{% if matrix_nginx_proxy_enabled %}
			{# Use the embedded DNS resolver in Docker containers to discover the service #}
			resolver {{ matrix_nginx_proxy_http_level_resolver }} valid=5s;
			set $backend "{{ matrix_nginx_proxy_proxy_dendrite_client_api_addr_with_container }}";
			proxy_pass http://$backend;
		{% else %}
			{# Generic configuration for use outside of our container setup #}
			proxy_pass http://{{ matrix_nginx_proxy_proxy_dendrite_client_api_addr_sans_container }};
		{% endif %}

		proxy_set_header Host $host;

		client_body_buffer_size 25M;
		client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size_mb }}M;
		proxy_max_temp_file_size 0;
	}
}

{% if matrix_nginx_proxy_proxy_dendrite_federation_api_enabled %}
server {
	listen 12088;

	server_name {{ matrix_nginx_proxy_proxy_dendrite_hostname }};
	server_tokens off;

	root /dev/null;

	gzip on;
	gzip_types text/plain application/json;

	location / {
		{% if matrix_nginx_proxy_enabled %}
			{# Use the embedded DNS resolver in Docker containers to discover the service #}
			resolver {{ matrix_nginx_proxy_http_level_resolver }} valid=5s;
			set $backend "{{ matrix_nginx_proxy_proxy_dendrite_federation_api_addr_with_container }}";
			proxy_pass http://$backend;
		{% else %}
			{# Generic configuration for use outside of our container setup #}
			proxy_pass http://{{ matrix_nginx_proxy_proxy_dendrite_federation_api_addr_sans_container }};
		{% endif %}

		proxy_set_header Host $host;

		client_body_buffer_size 25M;
		client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_federation_api_client_max_body_size_mb }}M;
		proxy_max_temp_file_size 0;
	}
}
{% endif %}