1 Commits
Author SHA1 Message Date
claude 6ec4378047 fix: gateway の nginx クラッシュループを修正(location 正規表現をクォート)(v2.1.263-c)
Helm Chart Release / release-chart (push) Successful in 7s
Build Session Image / build-push (push) Successful in 2m0s
nginx: [emerg] pcre2_compile() failed: missing closing parenthesis in
"^/s/(?<sid>[a-f0-9]" で gateway が CrashLoopBackOff になっていた。

location ~ の正規表現に含まれる {10} の { } を nginx 設定パーサーがブロック
区切りと解釈していた。nginx は { } ; を含む正規表現のクォートを必須とするため、
files/gateway.conf.template の該当 location をダブルクォートで囲んだ。
envsubst の置換は ${...} 6 変数のみで {10} に影響しないことを確認済み。
2026-09-08 18:12:57 +09:00
5 changed files with 54 additions and 2 deletions
+33
View File
@@ -0,0 +1,33 @@
# CHANGELOG 2.1.263-c — 手動リリース(ホットフィックス)
## 修正
- **gateway の nginx が起動時にクラッシュループする不具合**
```
nginx: [emerg] pcre2_compile() failed: missing closing parenthesis
in "^/s/(?<sid>[a-f0-9]" in /tmp/nginx/nginx.conf
```
`files/gateway.conf.template` の
```nginx
location ~ ^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$ {
```
で、正規表現中の `{10}` に含まれる `{` `}` を nginx の設定パーサーがブロック区切りと
解釈し、`location` の正規表現が `^/s/(?<sid>[a-f0-9]` で途切れていた。
nginx は `{` `}` `;` を含む正規表現を **クォート必須** とする。
修正: 正規表現全体をダブルクォートで囲む。
```nginx
location ~ "^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$" {
```
`envsubst` の置換対象は `${GATEWAY_PORT}` など 6 変数のみで `{10}` には影響しないことを
確認済み(レンダリング後のブレース対応もローカル検証)。
## バージョン
`version` = `2.1.263-c` / `appVersion` = `"2.1.263"`。
+17
View File
@@ -57,6 +57,23 @@ Git リポジトリ(GitHub / Gitea など互換 Git 全般)をチェック
## 改修履歴
### gateway nginx クラッシュループ修正(location 正規表現のクォート)(2026-09-08, v2.1.263-c)
**症状**: gateway コンテナが起動直後に
`nginx: [emerg] pcre2_compile() failed: missing closing parenthesis in "^/s/(?<sid>[a-f0-9]"`
で終了し、CrashLoopBackOff。
**原因**: `files/gateway.conf.template` の
`location ~ ^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$ { ... }` で、正規表現中の `{10}` の
`{` `}` を nginx の設定パーサーがブロック区切りと解釈し、`location` の regex が
`^/s/(?<sid>[a-f0-9]` で切れていた(nginx は `{` `}` `;` を含む正規表現のクォートを必須とする)。
**修正内容**: `location ~ "^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$" { ... }` と
正規表現全体をダブルクォートで囲んだ。envsubst の対象は `${...}` の 6 変数のみで
`{10}` には影響しないことを確認済み。
**対象ファイル**: `files/gateway.conf.template`, `README.md`, `Chart.yaml`, `CHANGELOG-2.1.263-c.md`
### 認証情報の credentials モード + トークン自動リフレッシュ(2026-09-08, v2.1.263-b)
**背景**: サブスクリプションのアクセストークンは定期的に失効・ローテーションする。単発
+1 -1
View File
@@ -6,7 +6,7 @@ description: >-
使い捨てコンテナで Git リポジトリ(GitHub / Gitea など)をチェックアウト・編集・
検証・プッシュする。一定時間アイドルなセッションは自動破棄される。
type: application
version: 2.1.263-b
version: 2.1.263-c
appVersion: "2.1.263"
keywords:
- claude-code
+1
View File
@@ -525,6 +525,7 @@ docker buildx build --platform linux/amd64,linux/arm64 \
| バージョン | Claude Code | 変更内容 |
|---|---|---|
| 2.1.263-c | 2.1.263 | 修正: gateway の nginx が起動時 `pcre2_compile() failed: missing closing parenthesis` でクラッシュループ。`location ~` の正規表現に `{10}` が含まれ、nginx がブロック区切りの `{}` と解釈していた。正規表現全体をダブルクォートで囲んで解消 |
| 2.1.263-b | 2.1.263 | `anthropic.authMode: credentials`(既定)を追加。`~/.claude/.credentials.json` 全体を注入し、セッション内 `claude` の自己更新に加え、クラスタ内 refresher CronJob(`refreshToken` で Secret を定期更新)でトークン失効に自動追従。→ トークンが変わっても再デプロイ不要。refresher の RBAC は認証情報 Secret 1 個の get/patch に限定 |
| 2.1.263-a | 2.1.263 | Service を `LoadBalancer` 対応(kube-vip 等でローカル LB の IP から管理画面へアクセス、`loadBalancerSourceRanges` で接続元制限、既定を `LoadBalancer` に変更)。Ingress は従来どおり併用可。API を使わないサブスクリプション認証(`claude setup-token` → `authMode: oauth`)の手順を README に追記 |
| 2.1.263 | 2.1.263 | 自動更新 |
+2 -1
View File
@@ -72,7 +72,8 @@ http {
}
# ---- セッションへのリバースプロキシ(WebSocket 対応)----
location ~ ^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$ {
# 正規表現に { } を含むため location 全体をクォートする(nginx 必須)
location ~ "^/s/(?<sid>[a-f0-9]{10})(?<rest>/.*)?$" {
include /tmp/nginx/auth_basic.conf;
include /tmp/nginx/auth_request.conf;
error_page 401 = @needlogin;