【笔记】Sentry For Windows 支持 http & https 上报

1,181 阅读4分钟

上一篇: 【笔记】Sentry For Windows 的安装与部署

感谢 CookieBoty(言鸽) 的帮助,提供了思路与分析以及对比配置的差异。

问题 & 场景

由于场景需要,Sentry 需要应用于小程序上:官方 Demo


发现问题的过程

满心欢喜的按着官方的配置安装客户端 SDk 支持。

image.png

配置安装完成后,重新启动项目然后使用官方推荐的验证代码。

image.png

控制台正常报错输出了,然后打开了 Sentry 的项目看板居然记录是 0???

image.png

然后,转到 network 查看上报链接,好家伙,原来是 502 Bad Gateway!!!

image.png

再对比了一次和官方推荐的 SDK 初始化配置后并没有发现什么问题,直到尝试重启项目后的输出信息,才发现端倪
因为项目是本地 dev 启动的,而推荐的配置里写的是 https

image.png

遂尝试将协议从 https 更改为 http 然后刷新页面观察结果:好家伙直接通过!

image.png

既然知道了问题所在那就可以着手解决问题了。


尝试解决问题

1. 给 Sentry 的 nginx 加上 ssl 证书

首先找到执行 nginx 的容器。

# 列出当前运行的 docker 容器
docker ps

# 找到 IMAGE 名为 nginx 的 hash
# CONTAINER ID   IMAGE                COMMAND                 CREATED       STATUS         PORTS
# 这是容器hash码  nginx:1.21.6-alpine  "/docker-entrypoint.…"  24 hours ago  Up 26 minutes  0.0.0.0:9000->80/tcp

# 使用 exec 命令进入容器环境
sudo docker exec -it 容器hash码 /bin/sh
# 旧版本使用这条命令,新版本没有 bash 环境了
sudo docker exec -it 容器hash码 /bin/bash

进入容器后,找到 nginx.conf 文件 vim 一看,果然!

并没有关于 ssl 的配置信息,只支持了 http 协议。

image.png

行吧,只是本地跑没有域名,哪就自己签个伪 ca 认证的 ssl 证书好了。

自签伪证书

过程就不多逼逼了,直接上命令。

按顺序执行下去就行,懒人福利了!

# 公钥 - Server
openssl genrsa -des3 -out server.key 2048
# 私钥 - Server
openssl rsa -in server.key -pubout -out server.pem
# 创建伪 CA 证书
openssl genrsa -des3 -out ca.key 2048

openssl req -new -key ca.key -out ca.csr

openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
# 伪 CA 证书给公钥签证
openssl req -new -key server.key -out server.csr

openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

# 此命令可消除密码确认,可选执行
openssl rsa -in server.key.org -out server.key

openssl x509 -in server.crt -out server.cer -outform der

最后只需要如下两个文件:

  • server.crt
  • server.key

将两个文件上传至容器内,然后添加如下代码。(记得自己改路径)

image.png

然后将 nginx 进行重启: nginx -s reload,重启完成后重新使用 https 访问 Sentry 管理后台。

很遗憾,并不支持 https 访问。 折腾了一个多小时证书配置了多种格式都无法正确访问。

image.png


2. 外层 nginx 反向代理

那就只能考虑另外一种代理方式了,在部署镜像的服务器上的 nginx反向代理。配置如下。

image.png

重启 nginx 后发现一个有趣的现象,一开始我以为是外层代理也不行。

image.png

同一个地址,多次刷新会有返回不同的结果,挺随机,有 200 也有 400,当时觉得很奇怪,我一度以为是反向代理的配置写错了。然后去求助了 CookieBoty(言鸽) 的帮助。

言鸽非常热心的帮忙看问题还进行了分析,最后提供了nginx官方的反向代理推荐配置,我对比发现 location 部分竟然没有太大差别!

我在认真分析了 400 错误的请求后发现,几乎都是静态资源文件,而请求则是 200、400 之间反复横跳。

检查思路如下。

  1. 回头去看容器里的 nginx 配置,检查后发现已经恢复原状态了,没问题。
  2. 检查外层 nginx 配置,是否有遗漏的或者手残写错的。

经过简单的检查发现。果然,是在外层代理了同一个端口,也就是说内外端口一样。然后造成了这样反复横跳的现象

image.png

知道问题了,那就容易解决问题了。只要在外层的 nginx 配置中换一个端口号就行了

这里我换成了 9001,重新 nginx -s reload, 访问 https://localhost:9001

image.png

非常好,一切正常了 (使用自签证书是会出现这个警告) ,做简单的浏览器信任之后就可以正常访问了。

image.png


https 上报

解决完了服务的问题,哪现在就要解决使用的问题了。

重新打开小程序,将配置的端口修改为 9001 。重新运行。

image.png

一切正常!很开心!


版权声明:
本文版权属于作者 林小帅,未经授权不得转载及二次修改。
转载或合作请在下方留言及联系方式。