修复:支持腾讯云 EdgeOne EO-Client-IP 头部,重构中间件真实IP获取优先级
This commit is contained in:
@@ -17,12 +17,22 @@ class CloudflareProxies
|
|||||||
// 优先采纳 Cloudflare 的 CF-Connecting-IP
|
// 优先采纳 Cloudflare 的 CF-Connecting-IP
|
||||||
if ($request->hasHeader('CF-Connecting-IP')) {
|
if ($request->hasHeader('CF-Connecting-IP')) {
|
||||||
$realIp = $request->header('CF-Connecting-IP');
|
$realIp = $request->header('CF-Connecting-IP');
|
||||||
$request->server->set('REMOTE_ADDR', $realIp);
|
|
||||||
$request->headers->set('X-Forwarded-For', $realIp);
|
|
||||||
}
|
}
|
||||||
// 其次兜底常见的国内 CDN 厂商(如腾讯云 EdgeOne / 阿里云 DCDN)
|
// 腾讯云 EdgeOne CDN 自定义回源头部(后台配置名:EO-Client-IP)
|
||||||
|
elseif ($request->hasHeader('EO-Client-IP')) {
|
||||||
|
$realIp = $request->header('EO-Client-IP');
|
||||||
|
}
|
||||||
|
// 其他国内 CDN 厂商(阿里云 DCDN 等)通用头部
|
||||||
elseif ($request->hasHeader('X-Real-IP')) {
|
elseif ($request->hasHeader('X-Real-IP')) {
|
||||||
$realIp = $request->header('X-Real-IP');
|
$realIp = $request->header('X-Real-IP');
|
||||||
|
}
|
||||||
|
// 最后兜底:取 X-Forwarded-For 最左边第一个(真实客户端)IP
|
||||||
|
// 格式为 "真实客户端, CDN节点1, CDN节点2"
|
||||||
|
elseif ($request->hasHeader('X-Forwarded-For')) {
|
||||||
|
$realIp = trim(explode(',', $request->header('X-Forwarded-For'))[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! empty($realIp)) {
|
||||||
$request->server->set('REMOTE_ADDR', $realIp);
|
$request->server->set('REMOTE_ADDR', $realIp);
|
||||||
$request->headers->set('X-Forwarded-For', $realIp);
|
$request->headers->set('X-Forwarded-For', $realIp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Route::post('/login', [AuthController::class, 'login'])->name('login.post');
|
|||||||
// 处理退出登录
|
// 处理退出登录
|
||||||
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
||||||
|
|
||||||
|
|
||||||
// 聊天室系统内部路由 (需要鉴权)
|
// 聊天室系统内部路由 (需要鉴权)
|
||||||
Route::middleware(['chat.auth'])->group(function () {
|
Route::middleware(['chat.auth'])->group(function () {
|
||||||
// ---- 第六阶段:大厅与房间管理 ----
|
// ---- 第六阶段:大厅与房间管理 ----
|
||||||
|
|||||||
Reference in New Issue
Block a user