你现在是一个 NAS 使用专家, 请帮我解决如下问题
目前在 NAS 上用 joplin+Nginx Proxy Manager(NPM),路由 OPENWRT
joplin APP_BASE_URL
https://joplin.XXXX.topopenwrt 上将 7788 端口映射到 npm,npm 反代到局域网 ip:80 端口
目前客户端使用
https://joplin.XXXX.top:7788 正常
但网页想进 joplin 后台会发现所有 css,js,跳转全部指向了
joplin.XXXX.top,默认端口 80,导致无法登录(以前没用 npm 时是 openwrt+nas 自带的反代,那时候可以正常进)
尝试将 APP_BASE_URL 改为
https://joplin.XXXX.top:7788 或者 7520,客户端也无法访问,网页报 invalid origin
https://joplin.XXXX.top(注意,报错没有端口号)
看起来你需要更改 Joplin 的配置,使其正确地反向代理通过 Nginx Proxy Manager 访问。下面是一些可能的解决方案:
1. 在 Nginx Proxy Manager 中创建一个新的主机,并将其指向 Joplin 的 IP 地址和端口号( 80 或 7788 或 7520 )。在该主机的设置中,启用 WebSocket 和 SSL ,并配置正确的证书。接下来,在你的 Joplin 客户端中将 APP_BASE_URL 设置为 https://你新创建的主机的域名或 IP 地址(包括协议和端口号)。然后重启 Nginx Proxy Manager 和 Joplin ,看看是否能正常访问。
2. 在 Nginx Proxy Manager 中创建一个新的位置,指向 Joplin 的 IP 地址和端口号( 80 或 7788 或 7520 ),然后将该位置添加到你现有的主机中。在该位置的设置中,启用 WebSocket 和 SSL ,并配置正确的证书。接下来,在你的 Joplin 客户端中将 APP_BASE_URL 设置为 https://你现有主机的域名或 IP 地址(包括协议和端口号)和新创建位置的路径。然后重启 Nginx Proxy Manager 和 Joplin ,看看是否能正常访问。
3. 如果上述方法都不起作用,你可以尝试修改 Joplin 的源代码。在 `WebApplication.js` 文件中,找到以下代码行:
```
this.app.use((req, res, next) => {
if (!this.api.config().clientWeb.packaged) {
res.header("Content-Security-Policy", "default-src 'self'");
}
next();
});
```
将其替换为以下代码:
```
this.app.use((req, res, next) => {
res.setHeader('Content-Security-Policy', "default-src 'self' 'unsafe-inline' 'unsafe-eval'");
next();
});
```
然后重启 Joplin ,看看是否能正常访问。
希望这些方法能够帮助你解决问题。如果你有任何疑问或需要更多帮助,请随时问我。