codejjagae
10
2020-11-01 05:00:22
1
168

도메인에 Spring-boot 프로젝트 연결시 403 에러가 발생합니다ㅠㅠ 제발 도와주세요


안녕하세요 선배님들! 

스프링 부트 프로젝트로 개인 웹 서비스를 목표로 진행하다

막히는 부분이 있어 선배님들의 도움이 필요해 질문 올립니다ㅠㅠ



환경 : Linux, maven, AWS EC2, Spring boot

수행한 단계 : EC2 환경 세팅, 도메인 구매, HTTPS 연결까지 완료

발생한 문제 :  도메인으로 접근하면 403 오류 와 Apache 테스트 페이지가 표시

도메인 연결시 참고한 글 : 

스프링 부트로 웹 서비스 출시하기(9-2 까지만 참고)

Amazon Linux 2에서 Cerbot의 Let’s Encrypt 



구체적인 문제 상황과 코드 :

현재 EC2 세팅은 완료된 상태이고, .dev 도메인 구매와 HTTPS 연결(Let's Encrypt 인증서 등록)까지

완료한 상태입니다. Elastic IP과 포트로 연결(XXX.XXX.XXX.XXX:443)하면 프로젝트의 메인 화면을 볼 수 있습니다. 


하지만, 구입 한 .dev 도메인으로 페이지를 접근하려하면 

403 오류와 아래와 같은 Apache 테스트 페이지가 표시됩니다.




현재 문제가 발생하는 이유를 개인적으로 추측하자면 아래와 같습니다.

1) httpd.conf에서 프로젝트를 실행하기 위한 올바른 경로를 입력하지 않았거나

2) 경로는 올바로 입력했으나 권한 설정이 올바르지 않거나


그래서 httpd.conf 파일을 수정하고,

실행하려는 디렉토리의 권한을 변경해 봤지만, 여전히 문제가 해결되지 않았습니다.



실행해야하는 파일의 경로는

"/home/ec2-user/project/src/main/WEB-INF/views/home.jsp"에 있습니다.


아래 부터는 코드입니다.


etc/httpd/conf/httpd-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    DocumentRoot "/home/ec2-user"
    ServerName "test.dev"
    ServerAlias "www.test.dev"
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/test.dev/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/test.dev/privkey.pem
</VirtualHost>
</IfModule>


etc/httpd/conf/httpd.conf

# set IP addresses
Listen 80
    
<VirtualHost *:80>
    DocumentRoot "/home/ec2-user"
    ServerName "test.dev"
    ServerAlias "www.test.dev"
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.test.dev [OR]
    RewriteCond %{SERVER_NAME} =test.dev
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

# set Deny entirety <- default
<Directory />
    AllowOverride none
    Require all denied
</Directory>


# Directory custom setting
DocumentRoot "/home/ec2-user"

<Directory "/home/ec2-user">
    AllowOverride None
    Require all granted
</Directory>

<Directory "/home/ec2-user">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

# Index position custom setting
<IfModule dir_module>
    DirectoryIndex /project/src/main/webapp/WEB-INF/views/home.jsp
</IfModule>


Error log

[core:error] [pid 7748] (13)Permission denied: [client XXX.XXX.XXX.XXX] 
AH00035: access to /project/src/main/webapp/WEB-INF/views/home.jsp denied 
(filesystem path '/home/ec2-user/project/src') because search permissions are missing 
on a component of the path


ec2-user's permissions


project's permissions




개발이 익숙하지 않아 질문도 장황한 것 같아 죄송하지만 ㅠㅠ 

혼자서 해결하기 버거워 질문 드립니다. 긴글 읽어주셔서 감사합니다! 

0
  • 답변 1

  • codejjagae
    10
    2020-11-02 05:24:40 작성 2020-11-02 05:28:00 수정됨

    답변은 달리지 않았지만 어찌어찌 해결되었습니다ㅠㅠㅠ!

    아직 https로 접근하니 뭔가 느리고 이미지가 일부 로드되지 않는 현상이 있지만... 

    저 같은 분이 계셔서 검색하다 이 글을 발견할지도 모르니 제가 해결한 상황을 공유하겠습니다!


    우선 저는 애초에 접근 방향이 틀렸습니다ㅠ

    httpd VirtualHost는 일반적인 룰을 따르고, DocumentRoot는 /home/ec2-user에 두는 것 까지는 

    맞았습니다.

    <VirtualHost *:80>
    DocumentRoot "/home/ec2-user"
    ServerName "test.dev"
    ServerAlias "www.test.dev"
    </VirtualHost>


    letsencrypt에서 발급받은 인증서는 도메인에 붙는거라 httpd 설정은 여기까지하고,

    Nginx로 http(80 port)로 접근하는 모든 접속을 https(443 포트)로 바꿔주면 되는걸 몰랐어서 엄청 헤맸네요.



  • 로그인을 하시면 답변을 등록할 수 있습니다.