Files
Gnuboard7/lang/en/errors.php
T
HeuJung b6c5e1f323 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 제보)
2026-08-28 18:09:27 +09:00

62 lines
2.7 KiB
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| Error Page Translations
|--------------------------------------------------------------------------
*/
'back_home' => 'Back to Home',
'401' => [
'title' => 'Authentication Required',
'message' => 'You need to log in to access this page.',
],
'403' => [
'title' => 'Access Denied',
'message' => 'You do not have permission to access this page.',
],
'404' => [
'title' => 'Page Not Found',
'message' => 'The page you requested does not exist or has been moved.',
],
'500' => [
'title' => 'Server Error',
'message' => 'Something went wrong while processing your request. Please try again later.',
],
'503' => [
'title' => 'Service Unavailable',
'message' => 'The service is currently unavailable. Please try again later.',
'unmet_dependencies' => 'Unmet Dependencies',
'template' => 'Template',
'modules' => 'Modules',
'plugins' => 'Plugins',
'contact_admin' => 'If the problem persists, please contact the administrator.',
],
// 화면 구성에 필요한 스크립트를 끝내 불러오지 못했을 때 (코어 엔진 / 템플릿 컴포넌트 번들)
'bootstrap' => [
'title' => 'Failed to load the page',
'message' => 'Your network connection may be unstable. Please refresh and try again.',
'reload' => 'Refresh',
// 스크립트를 받았으나 브라우저가 실행하지 못한 경우 (지원 범위보다 오래된 브라우저 등).
// 새로고침해도 낫지 않으므로 이 분기에서는 새로고침 버튼을 렌더하지 않는다.
'incompatible_title' => 'This browser cannot display the page',
'incompatible_message' => 'Your browser is too old to run this site. Please update it to the latest version, or try a different browser.',
// The HTTPS page requested an http:// asset and the browser blocked it (running behind a
// reverse proxy without trusted proxies configured, #124). Ordinary visitors see this
// screen, but only the operator can act on it, so the screen carries no server-side
// instructions — the cause and the fix go to the console for the operator. Reloading does
// not help, so no button is rendered and no natural recovery is implied.
'blocked_title' => 'Something went wrong with this site',
'blocked_message' => 'The site cannot be displayed because of a configuration problem. This is not caused by anything on your side — the site operator needs to fix it.',
],
];