forked from Fediversity/Fediversity
Added the files for snippets and conf.d in nginx, with a bit of comment.
This commit is contained in:
parent
47b21fb388
commit
cde931edfe
|
@ -25,6 +25,16 @@ Some of these go into `/etc/nginx/conf.d` because they are part of the
|
|||
configuration of nginx itself, others go into `/etc/nginx/snippets` because we
|
||||
need to include them several times in different places.
|
||||
|
||||
*Important consideration*
|
||||
|
||||
This part isn't a quick "put these files in place and you're done": a
|
||||
worker-based Synapse is tailor-made, there's no one-size-fits-all. This
|
||||
documentation give hints and examples, but in the end it's you who has to
|
||||
decide what types of workers to use and how many, all depending on your
|
||||
specific use case and the available hardware.
|
||||
|
||||
|
||||
|
||||
|
||||
# Optimizations
|
||||
|
||||
|
@ -129,8 +139,8 @@ satisfy all;
|
|||
```
|
||||
|
||||
Of course, subsitute these random addresses for the ones you trust. The
|
||||
dedicated nameserver (if you have one) should be configured in
|
||||
`conf.d/resolver.conf`:
|
||||
dedicated nameserver (if you have one, which is strongly recommended) should
|
||||
be configured in `conf.d/resolver.conf`:
|
||||
|
||||
```
|
||||
resolver [::1] 127.0.0.1 valid=60;
|
||||
|
@ -185,7 +195,7 @@ See a complete example of maps in the file [maps.conf](maps.conf).
|
|||
|
||||
# Upstreams
|
||||
|
||||
In our configuration, nginx is not only a reverse proxy, it's a load balancer.
|
||||
In our configuration, nginx is not only a reverse proxy, it's also a load balancer.
|
||||
Just like what `haproxy` does, it can forward requests to "servers" behind it.
|
||||
Such a server is the inbound UNIX socket of a worker, and there can be several
|
||||
of them in one group.
|
||||
|
@ -203,7 +213,7 @@ upstream login {
|
|||
Ater this definition, we can forward traffic to `login`. What traffic to
|
||||
forward is decided in the `location` statements, see further.
|
||||
|
||||
A more complex example are the sync workers. Under [#Maps] we split sync
|
||||
A more complex example are the sync workers. Under [Maps](#Maps) we split sync
|
||||
requests into two different types; those different types are handled by
|
||||
different worker pools. In our case we have 2 workers for the initial_sync
|
||||
requests, and 3 for the normal ones:
|
||||
|
@ -255,8 +265,7 @@ We forward that to our worker with this `location` definition, using the
|
|||
`proxy_forward` settings we defined earlier:
|
||||
|
||||
```
|
||||
location ~ ^(/_matrix/client/(api/v1|r0|v3|unstable)/login|/_matrix/client/(r0|v3|unstable)/register|/_matrix/client/(r0|v3|unstable)/register/available|/_matrix/client/v1/register/m.login.registration_token/validity|/_matrix/client/(r0|v3|unstable)/password_policy)$
|
||||
{
|
||||
location ~ ^(/_matrix/client/(api/v1|r0|v3|unstable)/login|/_matrix/client/(r0|v3|unstable)/register|/_matrix/client/(r0|v3|unstable)/register/available|/_matrix/client/v1/register/m.login.registration_token/validity|/_matrix/client/(r0|v3|unstable)/password_policy)$ {
|
||||
include snippets/proxy.conf;
|
||||
proxy_pass http://login;
|
||||
}
|
||||
|
|
13
matrix/nginx/workers/conn_optimizations.conf
Normal file
13
matrix/nginx/workers/conn_optimizations.conf
Normal file
|
@ -0,0 +1,13 @@
|
|||
# These settings optimize the connection handling. Store this file under /etc/nginx/conf.d, because
|
||||
# it should be loaded by default.
|
||||
|
||||
client_body_buffer_size 32m;
|
||||
client_header_buffer_size 32k;
|
||||
client_max_body_size 1g;
|
||||
http2_max_concurrent_streams 128;
|
||||
keepalive_timeout 65;
|
||||
keepalive_requests 100;
|
||||
large_client_header_buffers 4 16k;
|
||||
server_names_hash_bucket_size 128;
|
||||
tcp_nodelay on;
|
||||
server_tokens off;
|
|
@ -1,3 +1,7 @@
|
|||
# This file describes the forwarding of (almost) every endpoint to a worker or pool of
|
||||
# workers. This file should go in /etc/nginx/snippets, because we need to load it once, on
|
||||
# the right place in our site-definition.
|
||||
|
||||
# Account-data
|
||||
location ~ ^(/_matrix/client/(r0|v3|unstable)/.*/tags|/_matrix/client/(r0|v3|unstable)/.*/account_data) {
|
||||
include snippets/proxy.conf;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# These maps set all kinds of variables we can use later in our configuration. This fil
|
||||
# should be stored under /etc/nginx/conf.d so that it is loaded whenever nginx starts.
|
||||
|
||||
# List of allowed origins, can only send one.
|
||||
map $http_origin $allow_origin {
|
||||
~^https?://element.example.com$ $http_origin;
|
||||
|
|
13
matrix/nginx/workers/private.conf
Normal file
13
matrix/nginx/workers/private.conf
Normal file
|
@ -0,0 +1,13 @@
|
|||
# This file defines the "safe" IP addresses that are allowed to use the admin endpoints
|
||||
# of our installation. Store this file under /etc/nginx/snippets, so you can load it on
|
||||
# demand for the bits you want/need to protect.
|
||||
|
||||
allow 127.0.0.1;
|
||||
allow ::1;
|
||||
allow 12.23.45.78;
|
||||
allow 87.65.43.21;
|
||||
allow dead:beef::/48;
|
||||
allow 2a10:1234:abcd::1;
|
||||
deny all;
|
||||
satisfy all;
|
||||
|
8
matrix/nginx/workers/proxy.conf
Normal file
8
matrix/nginx/workers/proxy.conf
Normal file
|
@ -0,0 +1,8 @@
|
|||
# These are a few proxy settings that should be default. These are not used in the proxy_forward to
|
||||
# our workers, we don't want buffering there. Store this file under /etc/nginx/conf.d because it contains
|
||||
# defaults.
|
||||
|
||||
proxy_buffer_size 128k;
|
||||
proxy_buffers 4 256k;
|
||||
proxy_busy_buffers_size 256k;
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
# Settings that we want for every proxy_forward to our workers. This file should live
|
||||
# under /etc/nginx/snippets, because it should not be loaded automatically but on demand.
|
||||
|
||||
proxy_connect_timeout 2s;
|
||||
proxy_buffering off;
|
||||
proxy_http_version 1.1;
|
||||
|
|
|
@ -46,10 +46,14 @@ With workers, PostgreSQL's configuration should be changed accordingly: see
|
|||
server](https://tcpipuk.github.io/postgres/tuning/index.html) for hints and
|
||||
examples.
|
||||
|
||||
A worker-based Synapse is tailor-made, there is no one-size-fits-all approach.
|
||||
All we can do here is explain how things work, what to consider and how to
|
||||
build what you need by providing examples.
|
||||
|
||||
|
||||
# Redis
|
||||
|
||||
Workers need Redis as part of their communication, so our first step is
|
||||
Workers need Redis as part of their communication, so our first step will be
|
||||
to install Redis.
|
||||
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue