도메인과 레코드는 1:N 관계다. (=도메인 1개에 여러 종류의 DNS 레코드가 연결될 수 있음)
nslookup 도메인 하면 도메인에 붙은 A레코드들을 볼 수 있다.
도메인: example.com 같은 주소 (사용자들이 쓰기 편하다!)
→ 돈 주고 도메인 등록 업체(Registrar)에서 구매
네임서버(Name Server):
→ 도메인을 실제 서버 IP와 연결해주는 역할
→ 등록된 A 레코드 보고 연결
A 레코드(A Record):
→ 도메인 이름을 특정 IP 주소와 연결
→ 예: www.example.com → 123.45.67.89
등록 위치: 네임서버에서 설정
DNS 레코드: 도메인과 관련된 설정 정보 (A 레코드, CNAME 등)
-> 도메인 하나에 여러 IP를 붙일 수 있다. = 도메인 하나로 여러 서버 연결 가능
+) 여러 개의 A 레코드를 연결하면, DNS 서버는 랜덤 방식이나 라운드 로빈 방식으로 IP를 반환함.
돈 주고 도메인 사고, 네임서버에 A레코드를 등록한다. 참고로 네임 서버는 도메인 판매 측에서 써도 되고, 그냥 따로 써도 된다. 따로 쓰면 관리에 용이하다. (여러 도메인을 한 곳의 네임서버에서 관리 가능)
난 돈 없는데!
nip.io를 쓰면 도메인 구매 없이 도메인을 써볼 수 있다!
<IP 주소>.nip.io 이런 형식으로 하면 알아서 IP 주소에 매핑해주는 서비스다. 그리고 공짜다.
하지만 보안적 측면이나 형식 때문에 ip 주소를 입력해야 한다는 문제는 여전히 있다...
nginx는 포트 번호로 사이트를 여러개 운영 할 수 있다.
근데 도메인으로도 이게 가능하다!
도메인명-IP 주소.nip.io 여기서 IP 주소.nip.io 이 부분은 nip.io 쓰려고 있는거다. 앞에 도메인 명을 바꿈으로써 접속될 사이트를 바꿀 수 있다.
이걸 가상 호스트(Virtual Host)라고 한다.
echo -e "
server {
listen 80;
도메인명-IP 주소.nip.io;
root /web/site1;
}
" > source/etc/nginx/conf.d/vhost.conf
이렇게 설정하면 같은 포트여도 도메인 따라서 주는 게 달라진다.
생각해보면 url에 포트를 일일히 입력하지는 않으니까 도메인 따라 달라지는 게 유리하다.
(naver.com 하지 naver.com:80 안 하잖냐)
이전의 그림을 보자
여기서 nginx는 받은 요청을 조건에 따라 스프링부트에게 토스한다.
이때 nginx 가 정적파일캐시, SSL관련처리를 한 후 요청을 앱서버에게 토스 할 수 있는데, 이를 리버스 프록시라고 한다.
이렇게 미리 처리하면 캐싱을 쓸 수 있고, 보안이나 진입점 관리에 용이하다.
+) SSL(Secure Sockets Layer): 보안 소켓 계층. 웹사이트와 사용자의 브라우저 간 통신을 암호화함.
+) 참고로 app을 먼저 띄우고 nginx 띄워야 nginx가 인식한다.