Я настраиваю делегирование на сервере синапсов. Я следую официальным документам и, кажется, все на месте. Я получаю следующую ошибку в журналах nginx example.com, когда я вхожу на домашний сервер «example.org» в клиенте, который должен делегировать клиентский трафик на «synapse.example.com»:
[ошибка] 28804#28804: *246 open() "/usr/share/nginx/html/_matrix/client/r0/login" не удалось (2: нет такого файла или каталога) [..]
Клиент, похоже, запрашивает информацию о сервере матрицы не с того сервера, а с делегированного.
Конфиг nginx на example.com:
сервер {
имя_сервера www.example.com example.com; # под управлением Certbot
местоположение /.well-known/matrix/server {
приложение по умолчанию_тип/json;
return 200 '{"m.server": "synapse.example.com:443"}';
}
местоположение /.well-known/matrix/client {
приложение по умолчанию_тип/json;
return 200 '{"m.homeserver":{"base_url": "https://synapse.example.com"}}';
}
слушать [::]:443 ssl ipv6only=on; # под управлением Certbot
слушать 443 ssl; # под управлением Certbot
[...ssl-сертификаты...]
}
сервер {
если ($host = www.example.com) {
вернуть 301 https://$host$request_uri;
} # управляется Certbot
если ($host = example.com) {
вернуть 301 https://$host$request_uri;
} # управляется Certbot
слушать 80 ;
слушать [::]:80 ;
имя_сервера www.example.com example.com;
вернуть 404; # под управлением Certbot
}
Конфигурация synapse.example.com nginx:
сервер {
слушать 443 ssl http2;
слушать [::]:443 ssl http2;
# Для порта федерации
слушать 8448 ssl http2 default_server;
слушать [::]:8448 ssl http2 default_server;
имя_сервера synapse.example.com;
расположение ~ ^(/_matrix|/_synapse/client) {
[...]
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $ схема;
proxy_set_header Хост $host;
[...]
}
}
И, наконец, файл homeserver.yaml на сайте synapse.example.com:
[...]
public_baseurl: https://synapse.example.com/
присутствие:
слушатели:
- порт: 8008
тлс: ложь
тип: http
x_forwarded: правда
bind_addresses: ['::1', '127.0.0.1']
Ресурсы:
- имена: [клиент, федерация]
сжать: ложь
[...]
Я понимаю, что ошибка на сайте example.com подразумевает, что определенные запросы не перенаправляются на делегированный хост по адресу synapse.example.com, но ничего не удалось найти в документации по синапсу или где-либо еще. Я ожидал, что матричные клиенты/протокол анализируют общеизвестный JSON, а затем сами обрабатывают делегирование. Очевидно нет.
Может ли кто-нибудь указать мне правильное направление, как отлаживать здесь? Или даже дать объяснение, что я делаю неправильно. Помощь высоко ценится
Редактировать:
Открытие https://synapse.example.com/_matrix/key/v2/сервер в браузере json содержит пару ключ/значение
имя_сервера "example.com"
Я не уверен, где это определено, и правильно ли это.
(Кстати, все ссылки на «synapse.example.com» и «example.com» представляют собой настоящие доменные имена соответственно.)