feat(core): 리버스 프록시 신뢰 설정 지원 및 미설정 진단
TLS 가 앞단에서 종단되고 앱에는 HTTP 로 전달되는 구성에서 X-Forwarded-* 가 전부 무시되어 화면 백지·IP 왜곡·webhook 403 이 함께 발생했다. 코어에 신뢰 프록시 설정 지점이 아예 없던 것이 원인이다. - config/trustedproxy.php 로 내장 TrustProxies 미들웨어에 값을 공급한다. bootstrap/app.php 는 건드리지 않는다 — withMiddleware 클로저는 .env 로드 전에 평가되어 env 가 항상 null 이 되는 조용한 no-op 이다. - 판정은 App\Support\TrustedProxyDiagnostic 단일 SSoT 에서 계산하고 대시보드 알림·환경설정 고급 탭·설치 마법사·trusted-proxy:status 네 면이 소비한다. 판정식은 "HTTPS 인식 실패" 가 아니라 "X-Forwarded-* 수신 중 AND 신뢰 프록시 미설정" 이다 — HTTP 전용 사이트가 프록시 뒤에 있으면 화면은 정상인 채로 나머지만 조용히 어긋나기 때문이다. - 값 편집 UI 와 쓰기 엔드포인트는 두지 않는다(잠금 역설 + XFF 위조 경로). - 혼합 콘텐츠 차단을 부트스트랩 폴백의 별도 사유로 가른다. 새로고침으로 낫지 않으므로 버튼을 렌더하지 않고, 원인·조치는 콘솔로 운영자에게 보낸다. - 대시보드 알림을 심각도로 배치한다 — warning 은 상단 배너, 그 외는 하단 카드. 같은 알림이 두 곳에 뜨지 않으며, 여러 건은 간격을 두고 쌓인다. 공개 이슈: (@lyg-kaban 제보)
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
- 확장을 제거할 때 운영자가 넣어 둔 파일의 사본을 보관했다는 안내의 일본어 번역을 추가했습니다 — 모듈·플러그인·템플릿 제거 결과 화면에서 보관 경로가 일본어로 표시됩니다.
|
||||
- 운영자 추가 에셋의 저장·올리기·삭제가 활동 로그에 남을 때 표시되는 문구의 일본어 번역을 추가했습니다.
|
||||
- 초기 화면 파일 생성이 거듭 실패할 때 관리자 대시보드에 표시되는 안내의 일본어 번역을 추가했습니다 — 폴더 권한·디스크 공간·캐시 저장소 중 어느 쪽이 원인인지에 따라 다른 안내가 일본어 로케일에서 표시됩니다.
|
||||
- 리버스 프록시 뒤에서 신뢰 프록시가 지정되지 않았을 때 관리자 대시보드에 표시되는 안내의 일본어 번역을 추가했습니다.
|
||||
- 사이트 설정 문제로 화면 구성 파일이 차단됐을 때 표시되는 안내 문구의 일본어 번역을 추가했습니다 — 방문자 쪽 문제가 아니라는 안내가 일본어 로케일에서 표시됩니다.
|
||||
|
||||
## [1.0.8] - 2026-08-24
|
||||
|
||||
|
||||
@@ -33,5 +33,7 @@ return [
|
||||
'reload' => '更新',
|
||||
'incompatible_title' => 'このブラウザでは画面を表示できません',
|
||||
'incompatible_message' => 'ブラウザが古いため、サイトを実行できませんでした。ブラウザを最新バージョンに更新するか、別のブラウザでアクセスしてください。',
|
||||
'blocked_title' => 'サイトに問題が発生しました',
|
||||
'blocked_message' => 'サイトの設定の問題により画面を表示できません。訪問者側の問題ではなく、サイト運営者による対応が必要です。',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -174,4 +174,10 @@ return [
|
||||
'source_vendor_missing' => 'ソースディレクトリに vendor がありません。composer install が実行されていない可能性があります。',
|
||||
'composer_failed_with_output' => 'composer install 実行に失敗しました。:output',
|
||||
],
|
||||
|
||||
'trusted_proxy' => [
|
||||
'alert_title' => '信頼するプロキシが設定されていません',
|
||||
'alert_message' => 'プロキシヘッダー(:headers)を受信していますが、信頼するプロキシが設定されていないため、すべての訪問者が同じアドレス(:ip)として記録されています。.env に TRUSTED_PROXIES を指定してください。詳細: https://github.com/gnuboard/g7/blob/main/docs/backend/reverse-proxy.md',
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
- 확장 제거 시 표시되는 「운영자 파일 사본 보관」 안내 제목·설명의 일본어 번역을 추가했습니다 — 모듈·플러그인·템플릿 제거 결과 화면에서 보관 경로 안내가 일본어 로케일로 표시됩니다.
|
||||
- 확장 제거가 끝난 뒤 결과 화면 제목(「모듈 제거 완료」·「플러그인 제거 완료」·「템플릿 제거 완료」)의 일본어 번역을 추가했습니다 — 종전에는 결과 화면인데 제목이 「제거 확인」으로 남아 있었습니다.
|
||||
- 환경설정 > 고급의 리버스 프록시 진단 항목(라벨·상태·안내 문구)의 일본어 번역을 추가했습니다.
|
||||
|
||||
## [1.0.7] - 2026-08-24
|
||||
|
||||
|
||||
@@ -1827,7 +1827,24 @@
|
||||
"pagination_result_cap": "総件数集計の上限",
|
||||
"pagination_result_cap_desc": "この件数までのみ正確に集計します。0の場合は常にすべてを集計します(大規模リストの場合、リストが遅くなる可能性があります)。",
|
||||
"pagination_max_page": "ページ番号の上限",
|
||||
"pagination_max_page_desc": "アドレスから直接リクエスト可能な最大ページ番号です。0の場合は制限しません。通常の次ページへの移動はこの値に関わらず引き続き可能です。"
|
||||
"pagination_max_page_desc": "アドレスから直接リクエスト可能な最大ページ番号です。0の場合は制限しません。通常の次ページへの移動はこの値に関わらず引き続き可能です。",
|
||||
"trusted_proxy": "リバースプロキシ (信頼するプロキシ)",
|
||||
"trusted_proxy_desc": "HTTPS を前段で処理する構成 (AWS ALB, CloudFront, Cloudflare, nginx) で、接続アドレスと訪問者 IP を正しく認識するための設定です。値は .env の TRUSTED_PROXIES でのみ変更できます。",
|
||||
"trusted_proxy_status": "診断結果",
|
||||
"trusted_proxy_status_ok": "正常",
|
||||
"trusted_proxy_status_warning": "対応が必要",
|
||||
"trusted_proxy_status_not_applicable": "判定不可",
|
||||
"trusted_proxy_configured": "TRUSTED_PROXIES の設定値",
|
||||
"trusted_proxy_not_configured": "未設定 (どのプロキシも信頼しません)",
|
||||
"trusted_proxy_forwarded_headers": "受信中のプロキシヘッダー",
|
||||
"trusted_proxy_forwarded_headers_none": "なし",
|
||||
"trusted_proxy_is_secure": "HTTPS の認識",
|
||||
"trusted_proxy_is_secure_yes": "HTTPS として認識",
|
||||
"trusted_proxy_is_secure_no": "HTTP として認識",
|
||||
"trusted_proxy_client_ip": "訪問者 IP として認識された値",
|
||||
"trusted_proxy_remote_addr": "直前の呼び出し元 IP (REMOTE_ADDR)",
|
||||
"trusted_proxy_same_ip_hint": "2 つの値が同じでプロキシヘッダーを受信しています — すべての訪問者が同一人物として記録されている状態です。",
|
||||
"trusted_proxy_doc_hint": "設定方法と導入時の後続対応:"
|
||||
},
|
||||
"notification_definitions": {
|
||||
"title": "通知設定",
|
||||
|
||||
@@ -1573,6 +1573,7 @@
|
||||
"template_info": "テンプレート情報",
|
||||
"templates": "テンプレートリスト",
|
||||
"tokenValidation": "トークン検証",
|
||||
"trustedProxy": "信頼するプロキシ診断",
|
||||
"user": "ユーザー",
|
||||
"users": "ユーザーリスト",
|
||||
"dashboard_recent_notifications": "ダッシュボード最近の通知",
|
||||
|
||||
Reference in New Issue
Block a user