Nginx Reverse Proxy from Laravel

개발자, Bono·2024년 12월 23일

라라벨

목록 보기
3/3
post-thumbnail

1. Nginx 설정

server {
    listen 80;
    server_name example.com;

    # 내부 서비스의 포트로 프록시
    location / {
        # 연결될 서비스 IP:PORT 정보
        proxy_pass http://127.0.0.1:580;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # HTTPS 여부를 Laravel로 전달
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

2. Https (Certbot) 인증서 적용

sudo certbot --nginx -d example.com

3. 라라벨 설정 변경

vi App\Http\Middleware\TrustProxies

- $proxies의 값을 할당

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array<int, string|null>
     */
    protected $proxies = '*'; // 또는 ['127.0.0.1'] (프록시 서버의 IP)

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

위 설정을 하지 않을 경우, 라라벨에서는 리버스프록시 설정시 모든파사드의 URL연결을 Http로 간주하게됨.

0개의 댓글