개발
Laravel 개발 일지
라라벨 구버전에서 pagination link http 문제 해결 (proxy 환경)
32 views as of November 14, 2024.
어쩌다 우연히 발견하게된 문제인데,
라라벨 페이지네이션이 랜더링하는 페이지 버튼의 링크가 https가 아닌 http로 출력되는것을 발견했다. 이 포스팅에선 그 문제와 해결과정에 대한 기술을 해보겠다.
라라벨 페이지네이션
먼저 라라벨 페이지네이션에 대해 알아보자면, 여러개의 데이터행이 있을 경우 특정 개수만큼 짤라서 리스트화를 시켜주는 것으로 게시판 만들기의 가장 기본적인 기능이다.
라라벨 같은경우엔 이런 페이지네이션을 백단에서 호출하면 모델에 같이 담아 반환해주고, 이 페이지 네이션이 있다면 아래와같이 페이지네이션을 랜더링 할 수 있다.
- Backend
$posts = Post::where('title', 'LIKE', "%{$keyword}%")
->orderByDesc('created_at')
->paginate()
->appends($request->input());
Copy
- Front
<div class="wrap_pagination">
{{ $posts->onEachSide(2)->links() }}
</div>
Copy
문제 발생 - https 링크가 안나옴
여기서 해당 링크는 아래 브라우저 인스펙터 처럼 http 스키마를 포함한 링크를 반환하는데, 여기서 일부 환경에 제한해서 문제가 발생한다.
그 문제되는 환경은 아래와 같다.
- Laravel 구버전 (5.5에서도 보고된 바 있지만 나는 6.x 쓰는데도 마찬가지로 발생)
- https 사용시
- proxy 서버 사용시
1차적인 해결 - 스키마 강제변환
여기서 https 사용시
App\Providors\AppServiceProvider
에 아래와 같이 https 스키마 강제 변환 기능을 아래와 같이 사용하는 것으로 커버칠 수 있다.public function boot()
{
if (!\App::environment('local')) {
\URL::forceScheme('https');
}
}
Copy
문제는 proxy 서버를 사용할 경우에는 일부 라라벨 버전에서 이 설정이 안먹힌다는 것이다.
통상적으로는 프록시 서버를 사용하는 일이 없으니 까 이런 문제가 발생할일이 없다만, 나는 도커를 이용해 가상 환경을 구축하고 역방향 프록시로 nginx 서버를 운용하고 있기 때문에 위와 같은 문제가 발생한 상황이다.
여기서 역방향 프록시 설정시 nginx 요청 헤더에
X-Forwarded-Proto
를 설정해놓을때 일부 마이너한 라라벨 버전에서 https 스키마로 전환해주는 기능이 작동을 안한다고 한다.진짜 해결 - 라라벨 프록시 신뢰 설정
그래서 결국 이를 해결하기위해서 라라벨 자체에서도 신뢰하는 프록시 서버 설정을 다시금 잡아줄 필요가 있었다.
관련 설정을 제어하기위해 설정파일을 vendor에서 꺼내오기 위해 아래와 같은 명령어를 프로젝트 터미널에 입력해준다.
php artisan vendor:publish --provider="Fideloper\Proxy\TrustedProxyServiceProvider"
Copy
그러면 config/trustedproxy.php 라는 파일이 추가되며 이 파일을 열어서 아래 부분을 편집해줍니다.
'proxies' => '*', // [<ip addresses>,], '*', '<ip addresses>,'
Copy
디폴트는 null 로 되어있고 이를 아스테리카(전체)로 바꿔줍니다.
설정값을 바꿔주고 다시 프로젝트 터미널에서 설정을 재구성합니다.
php artisan config:cache
Copy
그러고 난 이후에 페이지를 다시 로딩해보면?
제대로 https 링크로 랜더링 되었음을 알 수 있습니다.
문제 해결 후 고찰
이 문제에 대해서 GPT에게 안물어 본건 아니다.
실제로 물어보니 위의 AppServiceProvider의 설정을 다시한번 확인해보라고 안내 받았으니까 말이다.
근데 문제는 그게 아니었고 관련내용을 스택 오버플로우에 찾아보니 프록시 환경에서 마이너 버전의 라라벨에서만 일어났던 문제인걸보니... 새삼 GPT 만능은 아니라는걸 새삼 느끼는 문제해결 과정이 아니었나 싶다.
Changing laravel pagination links to be over HTTPS
If you are on Heroku you may have noticed that when you have pagination links it comes out over HTTP. This is a problem because when you try to access that page, you get a Mixed Content error because
https://stackoverflow.com/questions/54083854/changing-laravel-pagination-links-to-be-over-https
#개발 #라라벨 #laravel #Paginatino #http #https
0
개의 댓글
Collection. Laravel 개발 일지
01.
라라벨에서 ajax로 FormData 넘길때 method에 의해 발생할 수 있는 오류
2021
02.
PHPStorm 라라벨 로컬 서버 환경 설정 값
2021
03.
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가
2024
04.
라라벨에서 세션을 이용한 손쉬운 조회수 기능 추가
2024
05.
라라벨 에러 페이지 수정 및 커스터마이징
2024
06.
라라벨에서 AWS SDK를 설치했을때 나오는 PHP 버전 에러 우회 방법
2024
07.
라라벨에서 IndexNow 사용법
2024
08.
동적 목차(ToC) 구현
2024
09.
라라벨 Permissions-Policy 헤더 추가 하는 방법
2024
10.
라라벨 구버전에서 pagination link http 문제 해결 (proxy 환경)
2024
11.
라라벨 블레이드 템플릿(Blade Template) Json 파싱
2024