目前在 NAS 上用 joplin+Nginx Proxy Manager(NPM),路由 OPENWRT
joplin APP_BASE_URL https://joplin.XXXX.top
openwrt 上将 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(注意,报错没有端口号)
请大神搭救一下,不胜感激
1
panxi 2023-05-10 14:02:46 +08:00 2
你现在是一个 NAS 使用专家, 请帮我解决如下问题
目前在 NAS 上用 joplin+Nginx Proxy Manager(NPM),路由 OPENWRT joplin APP_BASE_URL https://joplin.XXXX.top openwrt 上将 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 ,看看是否能正常访问。 希望这些方法能够帮助你解决问题。如果你有任何疑问或需要更多帮助,请随时问我。 |
2
gezimonkey OP 然...卵...
|
3
luckjoe680 2023-05-10 19:09:40 +08:00 2
nginx 添加 proxy_set_header host $host;
|
4
dode 2023-05-10 19:22:54 +08:00 1
不要动 Nginx ,修改内部应用配置 joplin 用相同的端口和协议
|
5
jackyzy823 2023-05-10 19:34:20 +08:00 1
|
6
gezimonkey OP @luckjoe680 尝试添加过,没作用啊
|
7
luckjoe680 2023-05-11 08:43:12 +08:00
@gezimonkey 不太可能吧…你添加错了吧估计
|
8
gezimonkey OP @luckjoe680 ![微信截图_20230511100537.png]( https://s2.loli.net/2023/05/11/4NpbJmLzr39hZFf.png)
|
9
gezimonkey OP |
10
gezimonkey OP |
11
gezimonkey OP ca...回复的图怎么发来着?
https://s3.bmp.ovh/imgs/2023/05/11/2634b0d81c3d3090.png |
12
loxlblade 2023-05-11 10:24:54 +08:00 via Android
弱弱地问一句,这里的 joplin 是我写稿的那个软件吗。。。。
|
13
gezimonkey OP @loxlblade Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device.
Joplin 是一个开源的笔记应用程序。捕捉你的想法,并从任何设备安全地访问它们 写稿的是啥?? |
14
loxlblade 2023-05-11 10:40:43 +08:00 via Android
@gezimonkey 那就是对的,我就用的这个。
|
15
luckjoe680 2023-05-11 10:53:52 +08:00 1
@gezimonkey 还是 invalid origin 吗 你看看请求的 origin 改了吗
|
16
gezimonkey OP @luckjoe680 谢谢你哈,就是用你说的办法,但不能 NPM 里用,可能是我不会用吧,只能新弄了一个 nginx,勉强能用了...很勉强...
|
17
BBBOND 360 天前
我也遇到了一样的问题,不过我在 https://blog.vvvv.day/?p=92 这篇文章里找到了灵感
我在 NPM 的 advanced 中添加了下面的配置 location / { proxy_pass http://xxx:xx; proxy_set_header Host $host:8443; 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_max_temp_file_size 30000m; } 8443 是我路由器 NAT 的统一入口端口 |