为知笔记 docker 版开启 https 碰到问题,折磨 3 天了,求指点

2022-11-26 00:05:11 +08:00
 SgtPepper
系统:rhel9.0|DockerCE v20.10.21|wiznote 最新镜像|nginx proxy manager v2.9.19

官方教程地址:
https://www.wiz.cn/docker-https
https://www.wiz.cn/zh-cn/docker-https
https://www.wiz.cn/zh-cn/introduction-docker-nas

按照为知笔记 docker 官方教程安装容器然后配下 frpc 透传到腾讯云服务器,然用后域名访问 http 是没问题的( http://www.mydomain.com:60004

但是根据教程搞 https 就一直失败,火狐访问提示“连接到 https://www.mydomaim.com:60004 时发生错误。SSL 接收到一个超出最大准许长度的记录。错误代码:SSL_ERROR_RX_RECORD_TOO_LONG”,用 edge 访问会提示“此站点的连接不安全 ERR_SSL_PROTOCOL_ERROR”。

nginx proxy manger 配置如下:
https://imgur.com/a/T72mpys

npm 有参考过这篇: https://post.smzdm.com/p/akx47px4

frpc 配置如下:
[common]
server_addr =
server_port =
token =
log_file = /usr/local/bin/frp/frpc.log
log_level = info
log_max_days = 7

[wiznote http]
type = tcp
local_ip = 192.168.1.14
local_port = 8080
remote_port = 60004

做过以下排查:
1.npm ssl 证书用的腾讯免费 ssl 证书,该证书在 wordpress 下工作正常
2.安装普通 nginx ,不用 npm ,一样的报错

被折磨 3 天了,实在没办法鸟。。。来求 v 友帮忙了
2110 次点击
所在节点    问与答
13 条回复
albertsteve11100
2022-11-26 02:58:18 +08:00
https://gofrp.org/docs/examples/vhost-http/看下 frp 文档,是不是 frp 配置错了
chinanala
2022-11-26 03:06:09 +08:00
我是在配置 HTTPS 站点反代 TTRSS 的 Docker 容器,也遇到过类似的 HTTPS 报错问题。解决方法是在 Nginx 的反代配置中赠加 2 行 HTTPS 配置(其它 HTTPS 反代配置继续保留),你可以参考下。如果本方案有用,还请及时回来更新结贴。

proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto $scheme;
totoro625
2022-11-26 08:24:33 +08:00
一定要用 nginx 的话,以下仅供参考:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /xxx.cer;
ssl_certificate_key /xxx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5:!EXP;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
proxy_pass http://wiz:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

另外可以用 frp 实现 SSL ,证书文件放在本地,不通过 nginx 加证书,以下是官方示例,只需映射到本地的 http 端口即可:
[plugin_https2http]
type = https
custom_domains = test.yourdomain.com
plugin = https2http
plugin_local_addr = 127.0.0.1:80
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
BugCry
2022-11-26 10:23:27 +08:00
套一个 Nginx proxy manager
BugCry
2022-11-26 10:28:48 +08:00
@BugCry 不好意思,没看到你已经套了。根据你的配置来看,localport 可能需要改成 nginx proxy manager 自己的 https 端口,有可能是这个问题。另外,domains 可以设置为 ip 先测试
SgtPepper
2022-11-26 20:05:47 +08:00
@chinanala 试了下没有用
SgtPepper
2022-11-26 20:26:57 +08:00
@albertsteve11100 frp 应该没问题,我群晖上几个应用的 https 用同一套 frp 配法都 ok
SgtPepper
2022-11-26 20:28:32 +08:00
@BugCry npm 就三个端口 80 443 81 ,你是指 npm 代理设置里面的 Forward Port 改成 443 ?
SgtPepper
2022-11-26 20:31:46 +08:00
@totoro625 看了下,你给的配置就是我试 nginx 而不是 npm 的时候用的,不生效
BugCry
2022-11-26 23:37:13 +08:00
@SgtPepper FRP(60004)->npm(443)->wiz(8080)
SgtPepper
2022-11-27 01:22:55 +08:00
@BugCry
还是不行啊老哥现在配置是这样的
frp:
[wiznote_http]
type = tcp
local_ip = 192.168.1.14
local_port = 443
remote_port = 60004

npm
Domain Names = www.mydomain.com
Scheme = http
Forward Hostname / IP = 192.168.1.14
Forward Port = 8080

你是这个意思不?
目前 firefox 访问提示:连接到 www.mydomain.com:60004 时发生错误。PR_END_OF_FILE_ERROR
SgtPepper
2022-11-27 01:44:50 +08:00
@BugCry 卧槽老哥牛逼,可以了!刚才不行是因为我 frpc 配置没生效,太感谢喽!真是离谱,我翻了那么多 npm 和 frp 教程愣是没人提到这个问题,其实仔细想想就明白了:npm 反代为知的 8080 http 口并配的 SSL ,那么 npm 监听的是 443 端口,所以 frpc 应该把 443 透传给轻量云的 fprs 。我之前在 frpc 透传的一直是为知的 8080 ,逻辑根本就错了。ORZ
SgtPepper
2022-11-27 01:51:42 +08:00
唉 8080 改 443 的事情能卡 4 天 真是垃啊 2333

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/897994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX