Bug 反馈:nginx 反向代理至 SiYuan 服务端时存在内核连接中断的异常

本贴最后更新于 970 天前,其中的信息可能已经斗转星移

经测试,该异常仅在 nginx 反向代理环境发生,直接将服务暴露出去不会出现问题,异常界面如下图所示:

image.png

Docker 运行 b3log/siyuan 时,前台错误信息输出如下:

2021/09/21 19:37:52 [Recovery] 2021/09/21 - 19:37:52 panic recovered:
runtime error: invalid memory address or nil pointer dereference
/usr/local/go/src/runtime/panic.go:221 (0x4535a6)
/usr/local/go/src/runtime/signal_unix.go:735 (0x453576)
/go/pkg/mod/github.com/gorilla/websocket@v1.4.2/conn.go:1184 (0xc20746)
/go/pkg/mod/github.com/88250/melody@v0.0.0-20201115062536-c0b3394adcd1/melody.go:172 (0xc2072e)
/go/pkg/mod/github.com/88250/melody@v0.0.0-20201115062536-c0b3394adcd1/melody.go:161 (0xed7717)
/go/src/github.com/siyuan-note/siyuan-src/kernel/server/serve.go:194 (0xed76dd)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0xc149ec)
/go/pkg/mod/github.com/gin-contrib/sessions@v0.0.3/sessions.go:52 (0xc149d8)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0xeaceac)
/go/pkg/mod/github.com/gin-contrib/gzip@v0.0.3/handler.go:60 (0xeace82)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0xc0bca1)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/recovery.go:99 (0xc0bc8c)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/context.go:165 (0xc0ab5d)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/gin.go:489 (0xc0a7e5)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.4/gin.go:445 (0xc0a344)
/usr/local/go/src/net/http/server.go:2878 (0x7582da)
/usr/local/go/src/net/http/server.go:1929 (0x753987)
/usr/local/go/src/runtime/asm_amd64.s:1581 (0x4708e0)

Docker 运行命令如下:

docker run --restart=on-failure:3 -p 127.0.0.1:6806:6806 -v /data/SiYuanNote/:/data b3log/siyuan -accessAuthCode xxx  -workspace /data -servePath note.xxx.cn -ssl

Nginx 配置如下:

server {
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/xxx.cn/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/xxx.cn/privkey.pem;
        server_name note.xxx.cn;
        location / {
                proxy_pass http://127.0.0.1:6806/;
        }
}

server {
        listen 80;
        server_name note.xxx.cn;
        rewrite .* https://$host$1 permanent;
}

其他运行环境:

  • KVM 虚拟化云主机
  • Docker version 20.10.8, build 3967b7d
  • OS: Debian 10 buster
  • Kernel: x86_64 Linux 4.19.0-16-amd64
  • 思源笔记

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

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

    19122 引用 • 71898 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6675 引用 • 29933 回帖 • 242 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • NGINX 上需要反代 WebSocket 协议。

    1 回复
  • 其他回帖
  • morchyang 1

    多谢大佬 🙏 ,问题已解决,贴上修改后的 nginx 配置供后续遇到问题的筒子们参考:

    map $http_upgrade $connection_upgrade {
            default upgrade;
            '' close;
    }
    server {
            listen 443;
            ssl on;
            ssl_certificate /etc/letsencrypt/live/xxx.cn/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/xxx.cn/privkey.pem;
            server_name note.xxx.cn;
            location / {
                    proxy_pass http://127.0.0.1:6806/;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection $connection_upgrade;
            }
    }
    
    

推荐标签 标签

  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    53 引用 • 85 回帖 • 1 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 720 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    276 引用 • 686 回帖
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 684 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    77 引用 • 1739 回帖 • 1 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 36 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 19 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 4 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 688 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    73 引用 • 157 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 119 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 454 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 135 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    333 引用 • 323 回帖 • 56 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 319 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 60 回帖 • 466 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 2 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 93 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注