mirror of
https://github.com/hanxi/xiaomusic.git
synced 2026-03-29 10:29:45 +08:00
199 lines
7.0 KiB
Markdown
199 lines
7.0 KiB
Markdown
---
|
||
title: 反向代理因为html中绝对路径导致超链接失效
|
||
---
|
||
|
||
# 反向代理因为html中绝对路径导致超链接失效
|
||
|
||
反向代理因为html中绝对路径导致超链接失效
|
||
|
||
## 评论
|
||
|
||
|
||
### 评论 1 - wuxinyumrx
|
||
|
||
更新一下解决方案,nginx反向代理配置如下(需要nginx包含http_sub_module):
|
||
|
||
```
|
||
proxy_http_version 1.1;
|
||
proxy_pass http://xx.xx.xx.xx:58090/;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
add_header Access-Control-Allow-Origin *;
|
||
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
|
||
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
|
||
proxy_set_header Accept-Encoding "";
|
||
sub_filter_types *;
|
||
sub_filter_once off;
|
||
sub_filter '/ws/' '/xm/ws/';
|
||
sub_filter '/static/' '/xm/static/';
|
||
sub_filter '/musiclist' '/xm/musiclist';
|
||
sub_filter '/musicinfo' '/xm/musicinfo';
|
||
sub_filter '/curplaylist' '/xm/curplaylist';
|
||
sub_filter '/generate_ws_token' '/xm/generate_ws_token';
|
||
sub_filter '/getversion' '/xm/getversion';
|
||
sub_filter '/getsetting' '/xm/getsetting';
|
||
sub_filter '/getvolume' '/xm/getvolume';
|
||
sub_filter '/setvolume' '/xm/setvolume';
|
||
sub_filter '/playingmusic' '/xm/playingmusic';
|
||
sub_filter '/searchmusic' '/xm/searchmusic';
|
||
sub_filter '/latestversion' '/xm/latestversion';
|
||
sub_filter '/cmd' '/xm/cmd';
|
||
sub_filter '"musiclist' '"xm/musiclist';
|
||
sub_filter '"musicinfo' '"xm/musicinfo';
|
||
sub_filter '"curplaylist' '"xm/curplaylist';
|
||
sub_filter '"generate_ws_token' '"xm/generate_ws_token';
|
||
sub_filter '"getversion' '"xm/getversion';
|
||
sub_filter '"getsetting' '"xm/getsetting';
|
||
sub_filter '"getvolume' '"xm/getvolume';
|
||
sub_filter '"setvolume' '"xm/setvolume';
|
||
sub_filter '"playingmusic' '"xm/playingmusic';
|
||
sub_filter '"searchmusic' '"xm/searchmusic';
|
||
sub_filter '"latestversion' '"xm/latestversion';
|
||
sub_filter '"cmd' '"xm/cmd';
|
||
sub_filter '/manifest.json' '/xm/manifest.json';
|
||
sub_filter '"start_url": "/"' '"start_url": "/xm/"';
|
||
sub_filter '"scope": "/"' '"scope": "/xm/"';
|
||
```
|
||
|
||
---
|
||
|
||
### 评论 2 - wooodxi
|
||
|
||
首先感谢各位大佬辛苦的付出。
|
||
我是家庭使用的威联通NAS部署的xiaomusic,NAS上也是使用的docker部署的是frpc客户端(nas上填写对应的端口号),在云服务使用docker部署的frps服务端(填写二级ssl域名)这样的反向代理,部署好以后外网通过链接https:xxx.xxx.xx是可以访问xiaomusic,播放歌曲音箱却没有声音,但是你们的测试播放连接是可以播放音乐, 包括点击停止播放音箱也是可以回应听到音箱发出再见收到的声音,就是播放歌曲音箱不出声。希望可以得到解答。 谢谢大佬
|
||
|
||
---
|
||
|
||
### 评论 3 - hanxi
|
||
|
||
@wooodxi 需要改设置页面的ip和端口。
|
||
|
||
---
|
||
|
||
### 评论 4 - 13267740993
|
||
|
||
nginx 502 要关闭浏览器再打开才行 帮忙看下啥原因
|
||
server {
|
||
listen 80;
|
||
server_name www.music.cn;
|
||
|
||
# ================================
|
||
# 根路径:原始反向代理(不做路径替换)
|
||
# ================================
|
||
location / {
|
||
|
||
# 反向代理到本机 58090 服务
|
||
proxy_pass http://127.0.0.1:58090;
|
||
|
||
# 使用 HTTP/1.1,避免 keep-alive / chunked 问题
|
||
proxy_http_version 1.1;
|
||
|
||
# 清空 Connection 头,交由 Nginx 自动管理
|
||
proxy_set_header Connection "";
|
||
|
||
# 转发客户端真实信息
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
# 连接 / 读取 / 发送超时设置,防止 502
|
||
proxy_connect_timeout 60s;
|
||
proxy_send_timeout 60s;
|
||
proxy_read_timeout 60s;
|
||
send_timeout 60s;
|
||
|
||
# 上传文件大小限制
|
||
client_max_body_size 100m;
|
||
}
|
||
|
||
# =================================================
|
||
# /xm/ 路径:子路径部署(带 WebSocket + sub_filter)
|
||
# =================================================
|
||
location /xm/ {
|
||
|
||
# 反向代理到后端服务根路径
|
||
proxy_pass http://127.0.0.1:58090/;
|
||
|
||
# 使用 HTTP/1.1(WebSocket 必须)
|
||
proxy_http_version 1.1;
|
||
|
||
# WebSocket 升级头
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
|
||
# 转发客户端信息
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
# 禁用 gzip,否则 sub_filter 无法生效
|
||
proxy_set_header Accept-Encoding "";
|
||
|
||
# ========== sub_filter 内容替换 ==========
|
||
# 对所有响应类型生效(HTML / JS / JSON)
|
||
sub_filter_types *;
|
||
|
||
# 页面中出现多次也全部替换
|
||
sub_filter_once off;
|
||
|
||
# 接口路径统一加 /xm 前缀
|
||
sub_filter '"/' '"/xm/';
|
||
sub_filter "'/" "'/xm/";
|
||
|
||
# WebSocket 路径修正
|
||
sub_filter '/ws/' '/xm/ws/';
|
||
|
||
# 静态资源路径修正
|
||
sub_filter '/static/' '/xm/static/';
|
||
|
||
# PWA / manifest 相关路径修正
|
||
sub_filter '/manifest.json' '/xm/manifest.json';
|
||
sub_filter '"start_url": "/"' '"start_url": "/xm/"';
|
||
sub_filter '"scope": "/"' '"scope": "/xm/"';
|
||
|
||
# ========== CORS 跨域配置 ==========
|
||
add_header Access-Control-Allow-Origin $http_origin always;
|
||
add_header Access-Control-Allow-Credentials true always;
|
||
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
|
||
add_header Access-Control-Allow-Headers
|
||
'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'
|
||
always;
|
||
|
||
# OPTIONS 预检请求直接返回
|
||
if ($request_method = OPTIONS) {
|
||
return 204;
|
||
}
|
||
|
||
# 超时配置
|
||
proxy_connect_timeout 60s;
|
||
proxy_send_timeout 60s;
|
||
proxy_read_timeout 60s;
|
||
send_timeout 60s;
|
||
|
||
# 上传大小限制
|
||
client_max_body_size 100m;
|
||
}
|
||
|
||
# ================================
|
||
# 502 错误页
|
||
# ================================
|
||
error_page 502 /502.html;
|
||
}
|
||
|
||
|
||
|
||
---
|
||
|
||
### 评论 5 - hanxi
|
||
|
||
我也不熟 nginx 配置,建议使用 https://github.com/jc21/nginx-proxy-manager 配置 proxy ,简单的 GUI 操作就行。
|
||
|
||
---
|
||
[链接到 GitHub Issue](https://github.com/hanxi/xiaomusic/issues/533)
|