Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Formatting for reverse-proxy docs #7514

Merged
merged 1 commit into from
May 15, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/7514.doc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Improve the formatting of `reverse_proxy.md`.
146 changes: 78 additions & 68 deletions docs/reverse_proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,97 +34,107 @@ the reverse proxy and the homeserver.

### nginx

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name matrix.example.com;

location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 10M;
}
}

server {
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;
server_name example.com;

location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}

> **NOTE**: Do not add a `/` after the port in `proxy_pass`, otherwise nginx will
```
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name matrix.example.com;

location /_matrix {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 10M;
}
}

server {
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;
server_name example.com;

location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
```

**NOTE**: Do not add a path after the port in `proxy_pass`, otherwise nginx will
canonicalise/normalise the URI.

### Caddy 1

matrix.example.com {
proxy /_matrix http://localhost:8008 {
transparent
}
}
```
matrix.example.com {
proxy /_matrix http://localhost:8008 {
transparent
}
}

example.com:8448 {
proxy / http://localhost:8008 {
transparent
}
}
example.com:8448 {
proxy / http://localhost:8008 {
transparent
}
}
```

### Caddy 2

matrix.example.com {
reverse_proxy /_matrix/* http://localhost:8008
}
```
matrix.example.com {
reverse_proxy /_matrix/* http://localhost:8008
}

example.com:8448 {
reverse_proxy http://localhost:8008
}
example.com:8448 {
reverse_proxy http://localhost:8008
}
```

### Apache

<VirtualHost *:443>
SSLEngine on
ServerName matrix.example.com;
```
<VirtualHost *:443>
SSLEngine on
ServerName matrix.example.com;

AllowEncodedSlashes NoDecode
ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
</VirtualHost>
AllowEncodedSlashes NoDecode
ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
</VirtualHost>

<VirtualHost *:8448>
SSLEngine on
ServerName example.com;
<VirtualHost *:8448>
SSLEngine on
ServerName example.com;

AllowEncodedSlashes NoDecode
ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
</VirtualHost>
AllowEncodedSlashes NoDecode
ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
</VirtualHost>
```

> **NOTE**: ensure the `nocanon` options are included.
**NOTE**: ensure the `nocanon` options are included.

### HAProxy

frontend https
bind :::443 v4v6 ssl crt /etc/ssl/haproxy/ strict-sni alpn h2,http/1.1
```
frontend https
bind :::443 v4v6 ssl crt /etc/ssl/haproxy/ strict-sni alpn h2,http/1.1

# Matrix client traffic
acl matrix-host hdr(host) -i matrix.example.com
acl matrix-path path_beg /_matrix
# Matrix client traffic
acl matrix-host hdr(host) -i matrix.example.com
acl matrix-path path_beg /_matrix

use_backend matrix if matrix-host matrix-path
use_backend matrix if matrix-host matrix-path

frontend matrix-federation
bind :::8448 v4v6 ssl crt /etc/ssl/haproxy/synapse.pem alpn h2,http/1.1
default_backend matrix
frontend matrix-federation
bind :::8448 v4v6 ssl crt /etc/ssl/haproxy/synapse.pem alpn h2,http/1.1
default_backend matrix

backend matrix
server matrix 127.0.0.1:8008
backend matrix
server matrix 127.0.0.1:8008
```

## Homeserver Configuration

Expand Down