
안녕하세요! 오늘은 redis를 퍼블릭 접속 가능하게 만들어 다른 Ip에서도 접근이 가능하게 만들어 보려고 합니다! (대표적으로 배포 된 스프링 부트 애플리케이션)
그전에,,
본 포스팅에서는 AWS Ec2 t3.micro를 사용하여 Redis 서버를 구축하려 합니다!

t3.micro에 해당하는 ec2 인스턴스를 생성해 줍니다! 이때 보안그룹으로는 redis 포트 및 애플리케이션 진입에 필요한 포트를 진입 가능하게 설정해줍니다. (대표적으로 6379)

시크릿 키를 이용하여 ssh로 접속해 줍니다! 저는 우분투로 해줬습니다!
Ubuntu에 맞는 명령어로 Ec2에 Redis를 설치하여 줍니다!
cd/etc/redis/redis.conf 파일을 vi나 nano를 이용하여 수정합니다! 이때 슈퍼유저 권한을 요구하므로 sudo를 통해 작성합니다.

sudo nano etc/redis/redis.conf

명령어를 입력하고나면 redis 관련 설정 파일이 나옵니다! 너무 기니까 nano에 찾기 기능인 ctrl + w로 bind 먼저 검색해줍시다!

그럼 이렇게 127.0.0.1 으로 로컬에서만 접속 가능하게 나오는데 이걸 #으로 주석처리를 한 후

bind 0.0.0.0 ::1 으로 작성해줘서 어떤 IP든 접속가능하게 만듭니다.

port도 변경할 수 있지만 redis에서는 6379 port를 많이 쓰니 그대로 두고 비밀번호를 설정하여 줍시다!! 비밀번호를 설정하지 않으면 악성 봇이 스크립트를 심어 redis에 저장된 키 값을 지우고 비트코인 마이닝 등 다양한 수법에 동원되니 꼭 비밀번호를 설정해줍니다!
ctrl+w 로 requirepass 라는 항목을 찾아줍니다

원하는 비밀번호를 설정 후 ctrl+x --> y를 하여 설정파일을 저장해줍니다!
그 다음 redis를 한번 재부팅 해줍니다!
sudo systemctl restart redis
재부팅 한 후 ps -ef | grep redis 명령어로 redis가 잘 변경되어 실행되는지 확인해주세요!

자 이제 Redis가 비밀번호만 알고있다면 퍼블릭으로 접속할 수 있게되었습니다!
redis-cli -h {인스턴스 IP} -p {설정포트} -a {비밀번호}
위 명령어로 ec2 인스턴스에 해당되는 redis 서버 redis cli에 접속 가능하고 key값도 조회 가능합니다! 이제 우리의 퍼블릭 redis를 spring boot 애플리케이션과 연동해봅시다!

redis에 해당되는 정보를 yml 파일에 추가해줍니다! 이때 호스트,포트,비밀번호 모두 환경변수로 구성해줍니다!

redisconfig 코드에도 host, port, 비밀번호를 넣어줍니다!

제 프로젝트 백엔드 애플리케이션과 연결 된 프론트에서 로그인을 시도해보겠습니다! 로그인이 되면 access token과 refresh 토큰이 redis에 담기도록 구성해놓았습니다!

keys 명령어로 토큰이 잘 들어왔음을 알 수 있습니다! 이로서 redis가 퍼블릭 접속 가능하게 되었습니다!
redis ec2(우분투) 설치:
https://velog.io/@arenacast/Ubuntu-%EC%97%90%EC%84%9C-Redis-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95
redis 퍼블릭 설정:
https://0m1n.tistory.com/100