nginx 경로 이슈 SPA

agnusdei·2024년 8월 13일

네, 말씀하신 문제는 Angular와 같은 Single Page Application (SPA)에서 흔히 발생하는 라우팅 이슈입니다. 서버 사이드에서 직접 URL에 접근할 때 404 오류가 발생하는 것은 Nginx가 해당 경로를 실제 파일 경로로 인식하기 때문입니다.

이 문제를 해결하기 위해 Nginx 설정을 수정해야 합니다. 다음과 같이 변경해 보세요:

server {
    server_name chajatda.com;
    root /home/ubuntu/landing;
    index index.html;
    
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 나머지 SSL 설정 등은 그대로 유지
    
    # ...
}

주요 변경 사항은 location / 블록 내의 try_files 지시어입니다. 이렇게 설정하면 Nginx는 다음 순서로 파일을 찾습니다:

  1. 요청된 URI와 일치하는 파일
  2. 요청된 URI와 일치하는 디렉토리
  3. 위 두 가지가 없으면 /index.html로 모든 요청을 전달

이렇게 하면 Angular 라우터가 클라이언트 사이드에서 경로를 처리할 수 있게 됩니다.

설정을 변경한 후 다음 명령어로 Nginx 설정을 테스트하고 재시작하세요:

sudo nginx -t
sudo systemctl restart nginx

이렇게 하면 직접 URL 접근 시에도 404 오류 없이 페이지가 정상적으로 로드될 것입니다.

추가로, Angular 프로젝트에서 index.html<base> 태그가 올바르게 설정되어 있는지 확인하세요. 예를 들어:

<base href="/">

이렇게 설정하면 Angular 라우터가 올바르게 작동할 수 있습니다.

이 설정들을 적용한 후에도 문제가 지속된다면, 추가적인 정보나 로그가 필요할 수 있습니다. 그럴 경우 알려주시면 더 자세히 살펴보겠습니다.

profile
DevSecOps Pentest🚩

0개의 댓글