关于 Docker 安装 v3.1.0 思源笔记基于 nginx 使用反向代理二级域名出错问题的反馈和讨论

各位贤达,大家好。

我刚开始使用思源笔记。

环境情况说明

VPS-UBUNTU

DOCKER 安装思源笔记。域名:http://www.B.C.N 子域名:http://dd.B.C.N

思源笔记版本:v3.1.0 思源笔记端口映射到 7777。

http://www.B.C.N:7777 能正常访问思源笔记,且使用多天无问题。

问题

今天使用 nginx 设置反向代理,设置如下:

server {  
    listen 80;  
    server_name dd.B.C.N;
  
    location / {  
        proxy_pass http://127.0.0.1:7777;
    }
}

现象

http://www.B.C.N:7777 能正常访问思源笔记,正常使用。

http://dd.B.C.N 能正常访问,使用授权码登陆之后,网页客户端出现以下问题。


1111.png

后台服务器显示以下代码


linux

ddsy_c | E 2024/07/29 22:43:03 serve.go:452: handle command failed: websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header
ddsy_c | E 2024/07/29 22:43:04 serve.go:452: handle command failed: websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connection' header

我的处理和实验

我将 ddsy_c 这个 docker 容器删除。重新寻找一个目录,docker 安装思源笔记。

再次实验二级域名访问思源笔记。

故障已经能够复现。

请教

各位贤达高手,请看看是什么问题?怎么解决?

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    20516 引用 • 79989 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • laputa-d

    1panel OpenResty 网页服务,开反向代理,https

    文件内容修改不了请问有遇到过吗?之前可以正常使用,昨天登陆后发现无法保存文档内容,右上角弹出信息无内容(如图)

    image.png

    新建笔记和标题都可以保存,输入内容就会有上边的弹窗,刷新页面后文件编辑的内容消失(文章标题可以正常保存)

    看 OpenResty 好像有关于 /api/transactions API 调用,但都被拒绝(状态码 403),不太懂是不是跟这个有关系

    现在发现是与 WAF 设置有关系,1panel 关闭 WAF 可以解决上边的问题

    1 操作
    laputa-d 在 2024-08-02 13:34:50 更新了该回帖
  • 其他回帖
  • muxue 1 评论

    在你的 nginx server 配置项里面追加如下配置,加在 location / 之前。这个是反代 ws 的配置项。

    location /ws {
        proxy_pass http://127.0.0.1:7777;
        proxy_read_timeout 60s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'Upgrade';
    }
    

    修改完毕后应该如下(缩进乱了)

    server {  
        listen 80;  
        server_name dd.B.C.N;
      
    location /ws {
        proxy_pass http://127.0.0.1:7777;
        proxy_read_timeout 60s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'Upgrade';
    }
        location / {  
            proxy_pass http://127.0.0.1:7777;
        }
    }
    
    

    思源报告的这个错误含义是,/ws 路径应该通过 websocket 协议访问,当你直接访问端口的时候,思源会给客户端发送 connection upgrade 并自动提升为 websocket 协议,此时客户端发回的请求里面也应该包括这个字段;但是当你反代了之后,客户端返回的 connection upgrade 协议头被 nginx 给卡掉了,思源没有收到这个消息,也就无法正常升级为 websocket 协议,于是就报错了。

    另外,如果 nginx 版本较高,似乎不需要反代 ws 也不会出现此问题(比如我在 1panel 里面安装的 openrestry 在没有配置 ws 反代之前也没有遇到过这个错误,虽然我还是配置了)

    1 回复
    专业!可靠!
    sunyanghua
  • 反代还要反代那个 websocket

    2 回复
  • daziduan
    作者

    @muxue


    👍


    按照你的方案,解决问题了。


    按照服务端的出错提示,我也能得出没有使用 websocket 协议,在连接头中没有发现“upgrade”“token”。

    你是怎么想出解决方案的?我该看些哪方面的学习资料?

    请指教。

    🙏

    1 回复
  • 查看全部回帖