qoderwake 无法公网访问时,可通过 nginx 反向代理解决:一、基础 http 代理;二、强制 https 跳转;三、路径级分流;四、tcp 四层转发;五、内网穿透隧道。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已部署 QoderWake 服务在本地或内网环境中,但无法通过公网域名直接访问,则可能是由于服务监听地址为 127.0.0.1 或内网 IP,且未对外暴露 HTTP/HTTPS 入口。以下是使用 Nginx 实现反向代理转发、使 QoderWake 可被公网访问的多种配置方法:
一、基础 HTTP 反向代理配置
该方法适用于 QoderWake 已在本地 8080 端口运行(如 http://127.0.0.1:8080),需将其映射至公网服务器的 80 端口,实现域名直访且地址栏保持原始域名不变。
1、编辑 Nginx 主配置文件,通常位于 /etc/nginx/nginx.conf 或在 /etc/nginx/sites-enabled/ 下新建站点配置文件。
2、在 http 块内添加如下 server 配置:
3、将 example.com 替换为您的实际域名,并确认 DNS A 记录已解析至该 Nginx 服务器公网 IP。
4、确保 QoderWake 服务正在监听 127.0.0.1:8080 或 0.0.0.0:8080,且防火墙放行 8080 端口(仅限本机访问时建议用 127.0.0.1)。
5、执行 sudo nginx -t 验证语法,无误后运行 sudo systemctl reload nginx 加载新配置。
二、强制 HTTPS 与 HTTP 自动跳转配置
该方法用于提升安全性,强制所有 HTTP 请求重定向至 HTTPS,并通过 SSL 终止在 Nginx 层,避免 QoderWake 自行处理证书;同时保留反向代理透明性,客户端仍看到原始域名。
1、获取并部署有效 SSL 证书,例如使用 Let's Encrypt 的 certbot 工具自动签发,证书路径通常为 /etc/letsencrypt/live/example.com/fullchain.pem 和 /etc/letsencrypt/live/example.com/privkey.pem。
2、在 Nginx 配置中新增一个仅监听 80 端口的 server 块,内含 301 重定向指令。
3、另建一个监听 443 端口的 server 块,启用 SSL 并配置 proxy_pass 指向本地 QoderWake。
4、在 HTTPS server 块中添加关键头字段:proxy_set_header X-Forwarded-Proto https; 和 proxy_set_header X-Forwarded-For $remote_addr;,确保 QoderWake 能正确识别用户真实协议与 IP。
5、重启 Nginx 服务使配置生效。
三、多端口映射与路径级分流配置
当同一台服务器需同时托管多个服务(如 QoderWake + 管理后台 + API 文档),可通过不同子路径区分流量,全部复用同一域名和 443 端口,降低端口管理复杂度。
1、确认 QoderWake 支持上下文路径(如以 /app/ 为根路径启动),或通过 Nginx 重写 URI 适配。
2、在 HTTPS server 块中添加多个 location 规则,例如:
3、为 QoderWake 配置 location /wake/ { proxy_pass http://127.0.0.1:8080/; },注意末尾斜杠用于路径替换。
4、为管理后台配置 location /admin/ { proxy_pass http://127.0.0.1:9001/; },确保后端服务也接受对应前缀。
5、若 QoderWake 不支持路径前缀,可在 location /wake/ 内添加 rewrite ^/wake/(.*)$ /$1 break; 进行内部重写。
四、TCP 层端口转发(非 HTTP 协议适用)
若 QoderWake 使用自定义 TCP 协议(如 WebSocket 长连接、二进制信令等),且不走标准 HTTP 流量,则需启用 Nginx 的 stream 模块进行四层转发,绕过 HTTP 解析逻辑。
1、确认 Nginx 编译时已启用 --with-stream 模块,可通过 nginx -V 2>&1 | grep -o with-stream 验证。
2、在主配置文件顶层(http 块外部)添加 stream 块:
3、监听公网端口(如 8443),并将流量透传至 QoderWake 实际监听的内网地址与端口(如 127.0.0.1:6000)。
4、若需 TLS 终止,可添加 ssl_preread on; 并配合 SNI 分流,但要求客户端支持发送 SNI 扩展。
5、重新加载 Nginx 配置,测试 telnet 或 nc 连通性验证转发是否生效。
五、内网穿透式代理(无公网 IP 场景)
当您的 Nginx 服务器本身处于 NAT 后(如家庭宽带、企业内网),不具备固定公网 IP 时,可通过反向隧道将内网 QoderWake 暴露至具备公网 IP 的中继服务器,再由该中继服务器运行 Nginx 完成代理。
1、在具备公网 IP 的云服务器上部署 Nginx,并配置标准反向代理指向 127.0.0.1:8080(即隧道落地端口)。
2、在运行 QoderWake 的本地机器上,建立 SSH 反向隧道:ssh -N -R 8080:127.0.0.1:8080 user@public-server-ip。
3、确保云服务器的 SSH 配置允许远程端口转发(GatewayPorts yes 与 AllowTcpForwarding yes)。
4、将隧道命令写入 systemd service 或 supervisord 实现开机自启与异常恢复。
5、配置云服务器防火墙放行 80/443 端口,并绑定域名完成最终公网访问链路。











