Cập nhật 2018
Laravel phiên bản 5.5 trở lên đã tích hợp sẵn TrustedProxies. Bạn có thể bỏ qua bước cài đặt và chỉ cần sửa lại file cấu hình ở Http/Middleware/TrustProxies.php là xong.
Bài viết này không hướng dẫn cách cấu hình ELB căn bản mà chỉ hướng dẫn fix lỗi https -> http của ELB (Elastic Load Balancing) với Laravel 5 bằng thư viện fideloper/proxy.
Quá trình gồm 5 bước sau đây:
- Cài đặt package
- Thêm Service Provider
- Publish file cấu hình
- Thêm middleware
- Sửa lại file cấu hình
1. Cài đặt package
Trusted proxy là thư viện của composer nên bạn có thể cài đặt dùng lệnh:
$ composer require fideloper/proxy
Hoặc sửa trực tiếp file composer.json:
{
"require": {
"fideloper/proxy": "^3.3"
}
}Sau đó dùng lệnh:
$ composer update
2. Thêm Service Provider
Sửa file config/app.php và thêm Provider của thư viện này vào trong mục providers
'providers' => array(
# các dòng khác giữ nguyên
# thêm dòng dưới đây
Fideloper\Proxy\TrustedProxyServiceProvider::class,
);3. Publish file cấu hình
Provider mà bạn thêm vào sẽ sử dụng cấu hình trong file /config/trustedproxy.php, để tạo file này chạy lệnh sau:
$ php artisan vendor:publish --provider="Fideloper\Proxy\TrustedProxyServiceProvider"
4. Thêm middleware
Mở file app/Http/Kernel.php và thêm class của thư viện vào mảng $middleware:
protected $middleware = [
# các dòng khác giữ nguyên
# thêm dòng dưới đây
'Fideloper\Proxy\TrustProxies',
]5. Sửa lại file cấu hình
Do thư viện này không chỉ để cấu hình riêng cho ELB nên ta phải sửa lại file /config/trustedproxy.php cho phù hợp.
<?php
return [
'proxies' => '**',
'headers' => [
(defined('Illuminate\Http\Request::HEADER_FORWARDED') ? Illuminate\Http\Request::HEADER_FORWARDED : 'forwarded') => null,
Illuminate\Http\Request::HEADER_CLIENT_IP => 'X_FORWARDED_FOR',
Illuminate\Http\Request::HEADER_CLIENT_HOST => null,
Illuminate\Http\Request::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO',
Illuminate\Http\Request::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT',
]
];That’s all.


