Matrix Docker Ansible eploy
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

254 wiersze
8.7 KiB

  1. #jinja2: lstrip_blocks: "True"
  2. {% set generic_workers = matrix_nginx_proxy_synapse_workers_list|selectattr('type', 'equalto', 'generic_worker')|list %}
  3. {% set media_repository_workers = matrix_nginx_proxy_synapse_workers_list|selectattr('type', 'equalto', 'media_repository')|list %}
  4. {% set user_dir_workers = matrix_nginx_proxy_synapse_workers_list|selectattr('type', 'equalto', 'user_dir')|list %}
  5. {% set frontend_proxy_workers = matrix_nginx_proxy_synapse_workers_list|selectattr('type', 'equalto', 'frontend_proxy')|list %}
  6. {% if matrix_nginx_proxy_synapse_workers_enabled %}
  7. # Round Robin "upstream" pools for workers
  8. {% if generic_workers %}
  9. upstream generic_worker_upstream {
  10. # ensures that requests from the same client will always be passed
  11. # to the same server (except when this server is unavailable)
  12. hash $http_x_forwarded_for;
  13. {% for worker in generic_workers %}
  14. {% if matrix_nginx_proxy_enabled %}
  15. server "matrix-synapse-worker-{{ worker.type }}-{{ worker.instanceId }}:{{ worker.port }}";
  16. {% else %}
  17. server "127.0.0.1:{{ worker.port }}";
  18. {% endif %}
  19. {% endfor %}
  20. }
  21. {% endif %}
  22. {% if frontend_proxy_workers %}
  23. upstream frontend_proxy_upstream {
  24. {% for worker in frontend_proxy_workers %}
  25. {% if matrix_nginx_proxy_enabled %}
  26. server "matrix-synapse-worker-{{ worker.type }}-{{ worker.instanceId }}:{{ worker.port }}";
  27. {% else %}
  28. server "127.0.0.1:{{ worker.port }}";
  29. {% endif %}
  30. {% endfor %}
  31. }
  32. {% endif %}
  33. {% if media_repository_workers %}
  34. upstream media_repository_upstream {
  35. {% for worker in media_repository_workers %}
  36. {% if matrix_nginx_proxy_enabled %}
  37. server "matrix-synapse-worker-{{ worker.type }}-{{ worker.instanceId }}:{{ worker.port }}";
  38. {% else %}
  39. server "127.0.0.1:{{ worker.port }}";
  40. {% endif %}
  41. {% endfor %}
  42. }
  43. {% endif %}
  44. {% if user_dir_workers %}
  45. upstream user_dir_upstream {
  46. {% for worker in user_dir_workers %}
  47. {% if matrix_nginx_proxy_enabled %}
  48. server "matrix-synapse-worker-{{ worker.type }}-{{ worker.instanceId }}:{{ worker.port }}";
  49. {% else %}
  50. server "127.0.0.1:{{ worker.port }}";
  51. {% endif %}
  52. {% endfor %}
  53. }
  54. {% endif %}
  55. {% endif %}
  56. server {
  57. listen 12080;
  58. {% if matrix_nginx_proxy_enabled %}
  59. server_name {{ matrix_nginx_proxy_proxy_synapse_hostname }};
  60. {% endif %}
  61. server_tokens off;
  62. root /dev/null;
  63. gzip on;
  64. gzip_types text/plain application/json;
  65. {% if matrix_nginx_proxy_synapse_workers_enabled %}
  66. {# Workers redirects BEGIN #}
  67. {% if generic_workers %}
  68. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappgeneric_worker
  69. {% for location in matrix_nginx_proxy_synapse_generic_worker_client_server_locations %}
  70. location ~ {{ location }} {
  71. proxy_pass http://generic_worker_upstream$request_uri;
  72. proxy_set_header Host $host;
  73. }
  74. {% endfor %}
  75. {% endif %}
  76. {% if media_repository_workers %}
  77. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappmedia_repository
  78. {% for location in matrix_nginx_proxy_synapse_media_repository_locations %}
  79. location ~ {{ location }} {
  80. proxy_pass http://media_repository_upstream$request_uri;
  81. proxy_set_header Host $host;
  82. client_body_buffer_size 25M;
  83. client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size_mb }}M;
  84. proxy_max_temp_file_size 0;
  85. }
  86. {% endfor %}
  87. {% endif %}
  88. {% if user_dir_workers %}
  89. # FIXME: obsolete if matrix_nginx_proxy_proxy_matrix_user_directory_search_enabled is set
  90. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappuser_dir
  91. {% for location in matrix_nginx_proxy_synapse_user_dir_locations %}
  92. location ~ {{ location }} {
  93. proxy_pass http://user_dir_upstream$request_uri;
  94. proxy_set_header Host $host;
  95. }
  96. {% endfor %}
  97. {% endif %}
  98. {% if frontend_proxy_workers %}
  99. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappfrontend_proxy
  100. {% for location in matrix_nginx_proxy_synapse_frontend_proxy_locations %}
  101. location ~ {{ location }} {
  102. proxy_pass http://frontend_proxy_upstream$request_uri;
  103. proxy_set_header Host $host;
  104. }
  105. {% endfor %}
  106. {% if matrix_nginx_proxy_synapse_presence_disabled %}
  107. # FIXME: keep in sync with synapse workers documentation manually
  108. location ~ ^/_matrix/client/(api/v1|r0|v3|unstable)/presence/[^/]+/status {
  109. proxy_pass http://frontend_proxy_upstream$request_uri;
  110. proxy_set_header Host $host;
  111. }
  112. {% endif %}
  113. {% endif %}
  114. {# Workers redirects END #}
  115. {% endif %}
  116. {% for configuration_block in matrix_nginx_proxy_proxy_synapse_additional_server_configuration_blocks %}
  117. {{- configuration_block }}
  118. {% endfor %}
  119. {% if matrix_nginx_proxy_proxy_synapse_metrics %}
  120. location /_synapse/metrics {
  121. {% if matrix_nginx_proxy_enabled %}
  122. {# Use the embedded DNS resolver in Docker containers to discover the service #}
  123. resolver 127.0.0.11 valid=5s;
  124. set $backend "{{ matrix_nginx_proxy_proxy_synapse_metrics_addr_with_container }}";
  125. proxy_pass http://$backend;
  126. {% else %}
  127. {# Generic configuration for use outside of our container setup #}
  128. proxy_pass http://{{ matrix_nginx_proxy_proxy_synapse_metrics_addr_sans_container }};
  129. {% endif %}
  130. proxy_set_header Host $host;
  131. {% if matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled %}
  132. auth_basic "protected";
  133. auth_basic_user_file /nginx-data/matrix-synapse-metrics-htpasswd;
  134. {% endif %}
  135. }
  136. {% endif %}
  137. {% if matrix_nginx_proxy_enabled and matrix_nginx_proxy_proxy_synapse_metrics %}
  138. {% for worker in matrix_nginx_proxy_proxy_synapse_workers_enabled_list %}
  139. {% if worker.metrics_port != 0 %}
  140. location /_synapse-worker-{{ worker.type }}-{{ worker.instanceId }}/metrics {
  141. resolver 127.0.0.11 valid=5s;
  142. set $backend "matrix-synapse-worker-{{ worker.type }}-{{ worker.instanceId }}:{{ worker.metrics_port }}";
  143. proxy_pass http://$backend/_synapse/metrics;
  144. proxy_set_header Host $host;
  145. {% if matrix_nginx_proxy_proxy_synapse_metrics_basic_auth_enabled %}
  146. auth_basic "protected";
  147. auth_basic_user_file /nginx-data/matrix-synapse-metrics-htpasswd;
  148. {% endif %}
  149. }
  150. {% endif %}
  151. {% endfor %}
  152. {% endif %}
  153. {# Everything else just goes to the API server ##}
  154. location / {
  155. {% if matrix_nginx_proxy_enabled %}
  156. {# Use the embedded DNS resolver in Docker containers to discover the service #}
  157. resolver 127.0.0.11 valid=5s;
  158. set $backend "{{ matrix_nginx_proxy_proxy_synapse_client_api_addr_with_container }}";
  159. proxy_pass http://$backend;
  160. {% else %}
  161. {# Generic configuration for use outside of our container setup #}
  162. proxy_pass http://{{ matrix_nginx_proxy_proxy_synapse_client_api_addr_sans_container }};
  163. {% endif %}
  164. proxy_set_header Host $host;
  165. client_body_buffer_size 25M;
  166. client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size_mb }}M;
  167. proxy_max_temp_file_size 0;
  168. }
  169. }
  170. {% if matrix_nginx_proxy_proxy_synapse_federation_api_enabled %}
  171. server {
  172. listen 12088;
  173. {% if matrix_nginx_proxy_enabled %}
  174. server_name {{ matrix_nginx_proxy_proxy_synapse_hostname }};
  175. {% endif %}
  176. server_tokens off;
  177. root /dev/null;
  178. gzip on;
  179. gzip_types text/plain application/json;
  180. {% if matrix_nginx_proxy_synapse_workers_enabled %}
  181. {% if generic_workers %}
  182. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappgeneric_worker
  183. {% for location in matrix_nginx_proxy_synapse_generic_worker_federation_locations %}
  184. location ~ {{ location }} {
  185. proxy_pass http://generic_worker_upstream$request_uri;
  186. proxy_set_header Host $host;
  187. }
  188. {% endfor %}
  189. {% endif %}
  190. {% if media_repository_workers %}
  191. # https://github.com/matrix-org/synapse/blob/master/docs/workers.md#synapseappmedia_repository
  192. {% for location in matrix_nginx_proxy_synapse_media_repository_locations %}
  193. location ~ {{ location }} {
  194. proxy_pass http://media_repository_upstream$request_uri;
  195. proxy_set_header Host $host;
  196. client_body_buffer_size 25M;
  197. client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_federation_api_client_max_body_size_mb }}M;
  198. proxy_max_temp_file_size 0;
  199. }
  200. {% endfor %}
  201. {% endif %}
  202. {% endif %}
  203. location / {
  204. {% if matrix_nginx_proxy_enabled %}
  205. {# Use the embedded DNS resolver in Docker containers to discover the service #}
  206. resolver 127.0.0.11 valid=5s;
  207. set $backend "{{ matrix_nginx_proxy_proxy_synapse_federation_api_addr_with_container }}";
  208. proxy_pass http://$backend;
  209. {% else %}
  210. {# Generic configuration for use outside of our container setup #}
  211. proxy_pass http://{{ matrix_nginx_proxy_proxy_synapse_federation_api_addr_sans_container }};
  212. {% endif %}
  213. proxy_set_header Host $host;
  214. client_body_buffer_size 25M;
  215. client_max_body_size {{ matrix_nginx_proxy_proxy_matrix_federation_api_client_max_body_size_mb }}M;
  216. proxy_max_temp_file_size 0;
  217. }
  218. }
  219. {% endif %}