# vim: ft=nginx server { listen 80; listen [::]:80; # =====MATRIX WELL-KNOWN FILES===== # Used for server federation location = /.well-known/matrix/server { charset utf-8; default_type application/json; if ($request_method = 'GET') { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; return 200 '{"m.server":"${MATRIX_SERVER}"}'; } if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; add_header 'Content-Length' 0; return 204; } return 405; } location = /.well-known/matrix/client { charset utf-8; default_type application/json; if ($request_method = 'GET') { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; return 200 '{"m.homeserver":{"base_url":"${MATRIX_CLIENT_SERVER}"}}'; } if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin '*'; add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type, Authorization'; add_header 'Content-Length' 0; return 204; } return 405; } # =====FRONTEND HOSTING===== location / { root /usr/share/nginx/html; index index.html; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }