编辑
2025-07-18
日常随记
00
编辑
2025-03-31
日常随记
00

正常如果只使用vanblog时,可以直接通过腾讯云域名配置到主机ip,开放80,443端口,就可以直接访问vanblog,但因为作者这个域名除了想访问vanblog外,还想做其他的用途,例如搭建api服务器等,因此额外部署nginx

链路

sequenceDiagram
浏览器->>nginx: 通过80/443端口
nginx->>vanblog:通过80端口 

部署过程

前提:在腾讯云已经申请好域名

  • 申请免费证书,并下载证书,申请地址
  • 上传证书到云服务器
  • 配置nginx
server { listen 80; server_name nobugs.com.cn; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name nobugs.com.cn; ssl_certificate /etc/nginx/certs/nobugs.com.cn_bundle.crt; ssl_certificate_key /etc/nginx/certs/nobugs.com.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; #access_log /var/log/nginx/host.access.log main; location / { proxy_pass http://vanblog:80; # 这里是容器的名称+容器的端口,不是容器对外暴露的端口 proxy_set_header Host $host; 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; # 传递 HTTPS 协议 root /usr/share/nginx/html; index index.html index.htm; } }
  • 启动服务
docker run --name nginx -p 80:80 -p 443:443 -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/certs:/etc/nginx/certs -d --restart=always nginx
编辑
2025-01-15
日常随记
00

在使用腾讯云的cos的sdk过程中,发现现网有异常反馈,返回的错误就一个EOF,针对这个问题,做个一个排查记录

腾讯云cos-sdk路径:https://github.com/tencentyun/qcloud-cos-sts-sdk/blob/master/go/sts.go#L130

源码分析

在上述源码中,我们可以看到如下代码,当初始化Cosclient的时候,如果没有传入http.Client,会使用默认的 Clipboard_Screenshot_1736946026.png

默认的参数中有一个DisableKeepAlives 参数用来控制是否关闭长连接,默认是关闭的

Clipboard_Screenshot_1736946132.png

这就导致在高并发的情况下,有可能长连接超时,服务端已经给客户端发了FIN,然后客户端此时触发了POST请求,因为服务端已经关了连接,所以读到了EOF,导致报错。

解决办法

既然知道了问题,解决的办法也就简单了

  • 自定义一个client,关闭长连接
go
tr := &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, TLSHandshakeTimeout: 10 * time.Second, DisableKeepAlives: true, ResponseHeaderTimeout: 5 * time.Second, ExpectContinueTimeout: 1 * time.Second, } netClient := &http.Client{ Transport: tr, Timeout: 10 * time.Second, } c := sts.NewClient(cosConf.SecretId, cosConf.SecretKey, netClient)
  • 针对每一个用户获取上传凭证时,添加缓存(凭证本来就是有时效的)授权路径时,可以写稍微通用点的

Clipboard_Screenshot_1736946454.png

编辑
2025-01-05
vanblog
00

vanblog因已经支持了腾讯云cos的图床能力,因此在搭建的过程中想去使用,但是遇到了一些问题,在此梳理记录下过程

配置文件哪里来

首先本地最好安装好picgo软件,且已经配置好,配置好后,直接打开配置文件,即可获取配置的json,picgo软件里的json文件比较长,可以参考我下面的示例做一些适当的删减

Clipboard_Screenshot_1736080154.png

如果你这边没有该软件,或者无法打开配置文件,则可以参考下我配置

json
{ "picBed": { "current": "tcyun", "uploader": "tcyun", "tcyun": { "version": "v5", "secretId": "替换成你自己的secretId", "secretKey": "替换成你自己的secretKey", "bucket": "替换成你自己的bucket", "appId": "同上", "area": "ap-guangzhou", "path": "/picGo/", "customUrl": "", "options": "" } }, "picgoPlugins": { "picgo-plugin-oss-outside-url": true } }

如何选择对应的插件

vanblog的图床是基于picgo来实现的,picgo针对不同的oss又有不同的插件,其中插件列表在此,例如我这边是使用的腾讯云COS,则需要安装该插件picgo-plugin-oss-outside-url

Clipboard_Screenshot_1736080055.png

其他问题

我这边在安装之前,安装了一个s3的软件,导致我在配置正确的情况下,还是不能正常的上传,看后台日志,上传到腾讯云cos是成功的,但是报了一个如下的s3的错,此原因是因为安装了s3的插件,但是未配置导致,可以禁用掉该插件,或者删除该插件来修复该问题

cf792cc371e2eb5da36cc88d317211a1.png

这种情况,建议直接重启pod即可

编辑
2025-01-05
云原生
00

MacOsM1 安装k8s

  • 安装docker desktop
  • 安装完成后勾选安装k8s

image-20230321下午72609947

在k8s中安装istio

  • 在终端里设置context
# 查询context kubectl config get-contexts # 设置context kubectl config use-context docker-desktop
  • 安装istio
istioctl install --set profile=demo -y
  • 设置默认标签
kubectl label namespace default istio-injection=enabled

部署bookinfo应用

  • 安装bookinfo应用
shell
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/platform/kube/bookinfo.yaml
  • 查看服务启动结果
shell
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
  • 查看外部访问ip
kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.163.194 localhost 15021:30278/TCP,80:31993/TCP,443:30544/TCP,31400:30466/TCP,15443:30305/TCP 7m35s
  • 部署bookinfo的gateway和vs
shell
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/networking/bookinfo-gateway.yaml
  • 设置ingress的host
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')

image-20230321下午73347285

部署仪表盘

先在本地下载好istio的源码:https://github.com/istio/istio/tree/release-1.17/samples/addons

安装kiali和其他组件

kubectl apply -f samples/addons # 查询安装状态 kubectl rollout status deployment/kiali -n istio-system

访问kiali面板

istioctl dashboard kiali

image-20230321下午74318275