질문을 삭제하지 말아주세요.!
 
3
2
1

안녕하세요?

redirect 시 https가 http로 바뀌는 경우가 생겨서 문의드립니다.

웹서버 자체는 SSL없이 동작하고 있습니다만 실제 접근은 SSL인증서를 통해 도메인으로 접근하고 있는 구조이고, HAProxy를 통해 로드밸런싱 및 SSL offloading이 발생합니다. 


문제는 예를들어 다음과 같은 상황에 발생합니다.


웹서버에는 라라벨로 작성한 코드가 올라가 있는 상태이고 라우팅은 아래와 같다고 한다면,

Route::get('/', [
    'as' => 'home',
    function() {
        return view('welcome');
    }
]);

Route::get('/home', function() {
    return redirect(route('home'));
});

공인IP로 연결된 URL 예를 들어 https://a.com 로 접근하는 경우 별 문제없이 웹서버의 내용이 출력됩니다.
또는 내부망에서 개별 서버에 IP로 접속 (http://192.x.x.31) 하는 경우에도 동일한 내용이 출력됩니다.

하지만 https://a.com/home 로 접근하는 경우는 http://a.com으로 리다이렉트가 일어나 웹서버까지 도달하지 못합니다.
내부망에서 http://192.x.x.31/home로 접근하는 경우는 http://192.x.x.31로 리다이렉트가 일어나 정상적으로 처리됩니다.

실제 서비스를 위해 내부IP로 접근하는 경우는 없으므로 도메인으로 접속하는 경우에도 리다이렉트가 정상적으로 일어나야 하는데 현 상황에서는 https를  http로 리다이렉트하는 문제가 발생합니다.

이를 해결할 방법이 잘 떠오르지 않아서 질문드립니다.


    CommentAdd your comment...

    1 answer

    1.  
      3
      2
      1

      자답입니다..

      app/Http/Middleware/TrustProxies.php에 로드밸런서 IP를 추가하였습니다. → 해결.

      참조:

      1. https://laravel.kr/docs/5.5/requests#configuring-trusted-proxies
      2. https://laravel.com/docs/5.6/requests#configuring-trusted-proxies
        CommentAdd your comment...