![Nginx - 将子目录重定向到其他域而不更改 URL](https://linux22.com/image/782811/Nginx%20-%20%E5%B0%86%E5%AD%90%E7%9B%AE%E5%BD%95%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%85%B6%E4%BB%96%E5%9F%9F%E8%80%8C%E4%B8%8D%E6%9B%B4%E6%94%B9%20URL.png)
我们在一个域的根目录下设置了一个 Matrix-Synapse 聊天服务器,并且我们想将 /element 子目录重定向到另一个域上托管的 Element 客户端,但不更改浏览器的 URL。
我们之前曾使用过类似这样的 nginx 配置来实现它,但由于某种原因,它无法与此设置配合使用。重定向有效,但它会更改浏览器 URL。这是 Matrix 域上的 nginx 配置文件;example.matrix 是 Matrix 服务器的域,example.element 是 Element 客户端的域。
upstream element {
server example.element;
}
server {
listen 80;
listen [::]:80;
server_name example.matrix;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.matrix;
ssl_certificate /etc/letsencrypt/live/example.matrix/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.matrix/privkey.pem;
location /element/ {
proxy_pass http://element/;
proxy_set_header Host $host;
}
location / {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;
server_name example.matrix;
ssl_certificate /etc/letsencrypt/live/example.matrix/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.matrix/privkey.pem;
location ~ ^(/_matrix|/_synapse/client) {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
client_max_body_size 50M;
}
}
有人能发现我们在这个配置中缺少什么吗?