Nginx + https

jathazp·2022년 3월 22일
0

Nginx + https 적용해보기

1. Nginx 설치

sudo apt-get install nginx

2. nginx 서버 블록 설정

nginx 설정 파일 수정

$ sudo vi /etc/nginx/nginx.conf

http {} 블록 끝에 구문 추가

include /etc/nginx/sites-enabled/*.conf; // sites-enabled 디렉토리에서 서버 블록을 찾도록 지시
server_names_hash_bucket_size 64; // 도메인이름 분석하는데 할당되는 메모리 양

3. 서버 블록 파일 만들기

sudo vi /etc/nginx/sites-available/도메인이름(프로토콜 제외).conf
ex)sudo vi /etc/nginx/sites-available/juhyeon.shop.conf



//서버 블록에 아래 내용 입력
server {
  listen  80;
  server_name 도메인이름;

  location / {
    root  /var/www/html; //vsftpd 홈디렉토리
    index  index.html index.htm index.nginx-debian.html;
    try_files $uri $uri/ =404; 
  }

  error_page  500 502 503 504  /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }
}

4. 서버 블록 파일 활성화

sudo ln -s /etc/nginx/sites-available/도메인.conf /etc/nginx/sites-enabled/도메인.conf

5. nginx 명령어 정리

nginx 재시작

$ sudo systemctl restart nginx

nginx log 확인

$ sudo ls /var/log/nginx // access.log error.log
$ sudo tail -f /var/log/nginx/access.log

로그 확인시 맨 밑줄로 이동하고 싶으면 대문자 G를 누르면 된다.
반대로 맨 위로 이동시 소문자 gg 를 누르면 된다.

6. https 적용

아래 링크를 참고해 적용하면 된다.
https://twpower.github.io/44-set-free-https-by-using-letsencrypt
위 링크에서 ssl 적용시 $ sudo certbot --nginx -d example.com -d www.example.com 부분에서 막힌다면 도메인 생성 사이트를 확인하자.
위에 www.example.com 이므로 host가 www로 된 도메인 만들었는지 체크할 것

https 까지 적용한 내 최종 코드는 아래와 같다.

upstream app {
       server 52.79.227.179:3000;
       #localhost:3000;
} //여기 서버 주소 여러개 입력시 로드 밸런싱이 적용된다.

#limit_req_zone $request_uri zone=MYZONE:10m rate=30r/m;
#limit_req_zone $binary_remote_addr zone=zone_one:10m rate=30r/m;
limit_req_zone $binary_remote_addr zone=zone_one:10m rate=600r/m;
server {
    server_name juhyeon.shop www.juhyeon.shop;

  #13.125.157.182 http://13.125.157.182;
  #location /post/{
  #  proxy_pass http://app;
  #}


    location / {
  #  limit_req zone=MYZONE;
  #  root  /var/www/html;
      limit_req zone=zone_one burst=5;
      proxy_pass http://app;
      proxy_redirect off;
  #  index  index.html index.htm index.nginx-debian.html;
  #  try_files $uri $uri/ =404;
    }

  #location ~ /.well-known {
  #        allow all;
  #}

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
      root  /usr/share/nginx/html;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/juhyeon.shop/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/juhyeon.shop/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.juhyeon.shop) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = juhyeon.shop) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen  80;
    server_name juhyeon.shop www.juhyeon.shop;
    return 404; # managed by Certbot
}

ref

Nginx
1. https://velog.io/@byjihye/ubuntu2
2. https://icerabbit.tistory.com/116 //location 적용 관련 부분 참고
3. https://velog.io/@kimkevin90/Nginx%EB%A1%9C-React-%EB%B0%B0%ED%8F%AC-%EB%B0%8F-express%EC%97%B0%EB%8F%99 //location 적용 관련 부분 참고
https://twpower.github.io/44-set-free-https-by-using-letsencrypt
https://kscory.com/dev/nginx/loadbalancer
https://sjparkk-dev1og.tistory.com/53
221110

추가적으로 공부할것
Nginx : proxy_pass vs proxy_redirect
Nginx : rewrite

0개의 댓글