
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
基于https://github.com/gorilla/websocket%E6%9E%84%E5%BB%BA%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BA%A7WebSocket%E4%BB%A3%E7%90%86%EF%BC%8C%E5%85%B7%E5%A4%87API%E5%AF%86%E9%92%A5%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD%E3%80%82%E5%8F%AF%E9%80%9A%E8%BF%87http.Handler%E6%8E%A5%E5%8F%A3%E9%9B%86%E6%88%90%E5%88%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AE%9E%E7%8E%B0%E4%B8%AD%EF%BC%8C%E6%88%96%E7%9B%B4%E6%8E%A5%E5%AE%89%E8%A3%85%E4%B8%BA%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E3%80%82
bashgo get -d github.com/jleeh/websocket-proxy && go build -o $GOPATH/bin/websocket-proxy
bashdocker run -e SERVER=ws://localhost:3000 -it jonnyh/websocket-proxy:latest
构建后直接运行二进制文件:
bash./websocket-proxy
命令行工具通过https://github.com/spf13/viper%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%EF%BC%8C%E6%94%AF%E6%8C%81%E9%80%9A%E8%BF%87%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%88%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0%E3%80%82
yamlport: 8080 server: ws://localhost:3000 auth_type: header key_manager_type: file key_identifier: /home/me/keys.json allowed_origins: - localhost - google.com
dotenvPORT=80 SERVER=ws://localhost:3000 AUTH_TYPE=header KEY_MANAGER_TYPE=file KEY_IDENTIFIER=/home/me/keys.json ALLOWED_ORIGINS=localhost,google.com
将key_manager_type配置为aws_sm,并将key_identifier设置为AWS中的密钥名称。
bashgo get github.com/jleeh/websocket-proxy/proxy
gopackage main import ( "github.com/jleeh/websocket-proxy/proxy" "log" "net/http" "net/url" ) func main() { u, _ := url.Parse("ws://localhost:3000") wp, _ := proxy.NewSimpleProxy(u) http.HandleFunc("/", wp.Handler) log.Fatal(http.ListenAndServe(":80", nil)) }
gotype Auth interface { Authenticate(*http.Request, KeyManager) bool }
go// Header是需要在请求头中设置`X-API-KEY`的认证实现 type Header struct{} // Authenticate从请求头获取`X-API-KEY`并通过KeyManager验证 func (p *Header) Authenticate(r *http.Request, km KeyManager) bool { key := r.Header.Get("X-API-KEY") return km.ValidateKey(key) }
可自定义Auth类型实现,然后传递给proxy.NewProxy(...)方法使用。
gotype KeyManager interface { ValidateKey(string) bool FetchKeys() error setIdentifier(string) }
go// File管理本地磁盘上的密钥 type File struct { id string keys []string } // ValidateKey检查给定密钥是否存在于文件中 func (f *File) ValidateKey(key string) bool { for _, k := range f.keys { if k == key { return true } } return false } // FetchKeys从本地磁盘文件加载密钥 func (f *File) FetchKeys() error { if file, err := os.Open(f.id); err != nil { return err } else if b, err := ioutil.ReadAll(file); err != nil { return err } else if err := json.Unmarshal(b, &f.keys); err != nil { return err } return nil } func (f *File) setIdentifier(id string) { f.id = id }
可自定义KeyManager类型实现,然后传递给proxy.NewProxy(...)方法使用。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务