[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;
        }
}

그리고 리로드하면

잘 될 것이다.