ฉันกำลังตั้งค่าการมอบหมายบนเซิร์ฟเวอร์ไซแนปส์ ฉันทำตามเอกสารอย่างเป็นทางการและดูเหมือนว่าจะมีทุกอย่างเรียบร้อยแล้ว ฉันได้รับข้อผิดพลาดต่อไปนี้ในไฟล์ nginx ของ example.com เมื่อฉันป้อนโฮมเซิร์ฟเวอร์ "example.org" ในไคลเอ็นต์ ซึ่งควรจะมอบสิทธิ์การรับส่งข้อมูลไคลเอ็นต์ให้กับ "synapse.example.com":
[ข้อผิดพลาด] 28804#28804: *246 open() "/usr/share/nginx/html/_matrix/client/r0/login" ล้มเหลว (2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว) [..]
ดูเหมือนว่าไคลเอ็นต์จะขอข้อมูลเซิร์ฟเวอร์เมทริกซ์จากเซิร์ฟเวอร์ที่ไม่ถูกต้อง แทนที่จะขอจากผู้รับมอบสิทธิ์
การกำหนดค่า nginx บน example.com:
เซิร์ฟเวอร์ {
server_name www.example.com ตัวอย่าง.com; # จัดการโดย Certbot
ตำแหน่ง /.well-known/matrix/server {
แอปพลิเคชัน default_type/json;
ส่งคืน 200 '{"m.server": "synapse.example.com:443"}';
}
ตำแหน่ง /.well-known/matrix/client {
แอปพลิเคชัน default_type/json;
กลับ 200 '{"m.homeserver":{"base_url": "https://synapse.example.com"}}';
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย 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 ;
server_name www.example.com ตัวอย่าง.com;
กลับ 404; # จัดการโดย Certbot
}
synapse.example.com การกำหนดค่า nginx:
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
#สำหรับพอร์ตสหพันธรัฐ
ฟัง 8448 ssl http2 default_server;
ฟัง [::]:8448 ssl http2 default_server;
server_name synapse.example.com;
ตำแหน่ง ~ ^(/_matrix|/_synapse/client) {
[...]
proxy_pass http://localhost:8008;
proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header โฮสต์ $host;
[...]
}
}
และสุดท้าย homeserver.yaml บน synapse.example.com:
[...]
public_baseurl: https://synapse.example.com/
การมีอยู่:
ผู้ฟัง:
- พอร์ต: 8008
tls: เท็จ
พิมพ์: http
x_forwarded: จริง
bind_addresses: ['::1', '127.0.0.1']
ทรัพยากร:
- ชื่อ: [ลูกค้า สหพันธรัฐ]
บีบอัด: เท็จ
[...]
ฉันเข้าใจว่าข้อผิดพลาดบน example.com บอกเป็นนัยว่าคำขอบางอย่างไม่ได้ส่งต่อไปยังโฮสต์ที่ได้รับสิทธิ์ที่ synapse.example.com แต่ไม่พบสิ่งใดในเอกสารของ synapse หรือที่อื่นๆ ฉันคาดว่าเมทริกซ์ไคลเอนต์ / โปรโตคอลจะแยกวิเคราะห์ JSON .well-known จากนั้นจัดการการมอบหมายเอง ชัดเจนว่าไม่.
ใครสามารถชี้ฉันในทิศทางที่ถูกต้องว่าจะดีบักที่นี่ได้อย่างไร หรือแม้แต่ให้คำอธิบายว่าฉันทำผิดอะไร ช่วยชื่นชมอย่างมาก
แก้ไข:
เปิด https://synapse.example.com/_matrix/key/v2/server ในเบราว์เซอร์ json มีคู่คีย์/ค่า
server_name "example.com"
ฉันไม่แน่ใจว่าสิ่งนี้กำหนดไว้ที่ใดและถูกต้องหรือไม่
(BTW การอ้างอิงถึง "synapse.example.com" และ "example.com" ทั้งหมดแสดงถึงชื่อโดเมนจริงตามลำดับ)