diff --git a/deploy/install-host.sh b/deploy/install-host.sh index c8378eb..78429f2 100755 --- a/deploy/install-host.sh +++ b/deploy/install-host.sh @@ -175,6 +175,16 @@ check "未知域名 → 自定义 404" 404 "$(code_of -k --resolve nobody.invali if [ -n "$DOMAIN" ]; then check "门户 $DOMAIN" 200 "$(code_of -k --resolve "${DOMAIN}:${ENTRY_PORT}:127.0.0.1" "${SCHEME}://${DOMAIN}:${ENTRY_PORT}/")" fi +if [ "$TLS" = "1" ]; then + # TLS 路径自检:跳转端口必须 302 到 https,且入口要能协商 HTTP/2 + # (曾踩过:nginx 1.22 不认独立的 http2 on;,必须写成 listen … ssl http2;) + check "http→https 跳转" 302 "$(code_of --resolve "nobody.invalid:${REDIRECT_PORT}:127.0.0.1" "http://nobody.invalid:${REDIRECT_PORT}/")" + HV="$(curl -sk -o /dev/null -w '%{http_version}' -m 8 "${SCHEME}://127.0.0.1:${ENTRY_PORT}/" 2>/dev/null || echo '?')" + if [ "$HV" = "2" ] || [ "$HV" = "2.0" ]; then echo " ✓ HTTP/2 协商 → $HV"; else echo " ! HTTP 版本为 $HV(HTTP/2 与客户端支持有关,仅提示)"; fi + CERT_SUBJ="$(echo | openssl s_client -connect 127.0.0.1:${ENTRY_PORT} -servername "${DOMAIN:-localhost}" 2>/dev/null | openssl x509 -noout -subject 2>/dev/null || true)" + echo " 证书: ${CERT_SUBJ:-未能读取(仅提示)}" +fi + echo " 容器状态:$(docker inspect navi --format '{{.State.Status}} {{if .State.Health}}{{.State.Health.Status}}{{end}}')" [ "$fail" = 0 ] || die "自检未全绿,请按上面 ✗ 项排查(容器保留未删除,便于查看日志)"