[Nginx] 도메인 붙이기 (with CloudFlare)
도메인 붙이는 법을 간단히 다뤄보겠다.
우선 보유한 도메인이 있어야 하는데, 보통 웬만한 사이트들은 1년에 1만원 안팎으로 나온다.
공짜로 도메인 뿌려주는 https://www.freenom.com/en/index.html?lang=en 이런 사이트도 있긴 하다만, 당연히 돈주고 쓰느니만 못하다.
개발자라면 하나쯤 갖고있는게 좋지 않겠는가? 없다면 질러보자.
내 경우에는 cloudflare를 사용했는데, 다른 공급자들도 크게 다를건 없을 것이다. 가비아나 aws나..
레코드 추가하기
도메인 공급자 사이트에 들어가서, 레코드를 추가해준다.
내 도메인이 myyrakle.com이니, nginx.myyrakle.com이 될 것이다.
그리고 저기 집어넣은 주소가 현재 로드밸런서가 돌고 있는 공개주소다.
이렇게 돌고있다.

인증서 발급받기
그다음에는 공급자 사이트에서 SSL용 인증서를 발급받는다.
이게 있어야 https에 필요한 암호화 작업을 처리할 수 있다.
cloudflare는 저기서 받을 수 있다.

hostname만 적어주고 생성 누르면

이렇게 뽑아준다.
한번밖에 못보니까 어디 은밀한 곳에 잘 숨겨둬야 한다.
저 두 값을 nginx 서버에서도 작성해서 보관해준다.

nginx 설정
이제 nginx에서만 처리해주면 된다.
만약 이렇게 되어있는 소스였다면
upstream backend {
least_conn;
server 172.31.10.219:80;
server 172.31.15.163:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
이런식으로 다시 작성해주면 된다.
upstream backend {
least_conn;
server 172.31.10.219:80;
server 172.31.15.163:80;
}
server {
listen 80;
listen [::]:80;
server_name nginx.myyrakle.com;
rewrite ^ https://nginx.myyrakle.com/$request_uri; // http로 들어오면 https로 강제 전환
}
server {
listen 443 ssl;
server_name nginx.myyrakle.com; // 도메인
ssl_certificate /ssl/cert; // 아까 받은 인증서
ssl_certificate_key /ssl/key; // 그리고 인증서 키
location / {
proxy_set_header Host $http_host;
proxy_pass http://backend;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

그리고 리로드하면

잘 될 것이다.
