작성
·
83
·
수정됨
0
리액트 + 스프링부트로 개발을 진행 중에 있고, 강의를 따라서 리액프 프로젝트를 배포하고 있습니다. 그런데, 404 Not Found가 발생하여 이와 관련하여 문의드리고자 합니다.
우선 제 프로젝트의 위치는 ~프로젝트명/front/build/index.html과 같습니다. (저는 dist 대신 build가 뜨더라구요)
nginx의 설정파일에서 root에 '~/프로젝트명/front/build'로 할 때에는 404가 발생했는데, '/home/ubuntu/프로젝트명/front/build'하니까 404 오류가 없어졌습니다. 경로를 명확하게 명시해야 하는 것인가요?
추가로 요청 결과 403 Forbidden이 나왔는데 어떠한 이유 때문일까요... 로컬에서는 문제없이 동작합니다
답변 2
0
안녕하세요 도토리님! 질문 잘 주셨어요:D
인프런 AI 인턴이 잘 답변해준 것 같아서 AI 인턴 답변 한 번 더 차용하겠습니다!
Nginx 설정 시 root 나 alias를 사용할 때는 절대 경로를 명확히 설정해야 합니다.
~/프로젝트명/front/build
와 같은 경로는 사용자 홈 디렉토리를 나타내지만, Nginx는 시스템 전역에서 접근하는 역할을 하기 때문에 절대 경로인/home/ubuntu/프로젝트명/front/build
로 지정해야 정상적으로 파일을 찾을 수 있습니다.
조금 더 덧붙이자면 ~
의 어떤 사용자(ex. ubuntu
, root
등)냐에 따라 경로가 달라집니다.
따라서 명확히 설정하기 위해서는 절대 경로로 설정하는 걸 추천드립니다!
추가로 403 Forbidden 에러는 어떤 상황에서 발생했는 지
알려주실 수 있을까요~??
그리고 403 Forbidden 에러가 발생했을 때
/var/log/nginx/error.log
와 /var/log/nginx/access.log
의 로그도 같이
확인 후에 전달 부탁드릴게요:D
0
안녕하세요, 인프런 AI 인턴입니다. 도토리님.
Nginx 설정 파일에서 파일 경로 문제와 관련된 질문을 주셨네요. Nginx 설정 시 root 나 alias를 사용할 때는 절대 경로를 명확히 설정해야 합니다. ~/프로젝트명/front/build
와 같은 경로는 사용자 홈 디렉토리를 나타내지만, Nginx는 시스템 전역에서 접근하는 역할을 하기 때문에 절대 경로인 /home/ubuntu/프로젝트명/front/build
로 지정해야 정상적으로 파일을 찾을 수 있습니다.
403 Forbidden 오류에 대해서는 여러 가지 원인이 있을 수 있습니다. 일반적으로 다음 사항들을 확인해보세요:
파일 및 디렉터리 권한: 웹 서버 사용자(nobody, www-data 등)가 해당 디렉토리와 파일에 접근할 권한이 있는지 확인하세요. Unix/Linux 환경에서는 chmod
, chown
명령어를 통해 권한을 설정할 수 있습니다.
Nginx 설정: Nginx 설정 파일에서 allow
와 deny
옵션을 확인해 보세요. 특정 IP만 접근을 허용했거나 특정 경로에 대해 접근 제한이 설정되어 있을 수 있습니다.
SELinux 설정: 만약 사용 중인 환경이 SELinux를 활성화하고 있다면, 접근이 제한될 수 있습니다. SELinux 설정을 확인하거나 임시적으로 비활성화하여 문제가 해결되는지 확인할 수 있습니다.
Access Token: Access token 관련 문제일 가능성도 있습니다. 배포 환경에서 추가적인 인증이나 권한 검사가 설정되어 있을 수 있습니다. 이 경우, 서버 코드에서 토큰 검사를 어떻게 처리하는지, 환경에 따라 다른 설정이 필요한지 확인하는 것이 좋습니다.
이 외에도 해결책이 필요하시다면 아래 링크를 통해 추가적인 답변을 확인하시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.