nginx - tomcat - letsencrypt ssl 적용하기

2018. 3. 4. 16:16공부/SPRING

nginx - tomcat - letsencrypt 적용



이 글은 아래 두 글에 이은 마지막 글입니다.


1. java keytool 사용 / 스프링부트 SSL 설정 출처: http://iwan2fly.tistory.com/202?category=501300 [Dreaming]

2. 톰캣 웹 서비스에 Letsencrypt SSL 적용하기.. (실패->성공) 출처: http://iwan2fly.tistory.com/203 [Dreaming]



2번 글 마지막에 언급한 바와 같이, 톰캣 앞에 nginx 를 두기로 합니다.



#1 nginx 설치


yum install nginx




#2 nginx 동작 확인


service nginx start 후 브라우저에서 확인




#3 nginx 디렉토리 구조

nginx.conf 에서 conf.d/*.conf 파일을 읽어서 환경을 세팅합니다.


[root@venus nginx]# ls -alF

합계 84

drwxr-xr-x    4 root root  4096 2018-03-04 15:02 ./

drwxr-xr-x. 107 root root 12288 2018-03-04 12:53 ../

drwxr-xr-x    2 root root  4096 2018-03-04 15:50 conf.d/

drwxr-xr-x    2 root root  4096 2016-10-31 21:39 default.d/

-rw-r--r--    1 root root  1077 2016-10-31 21:39 fastcgi.conf

-rw-r--r--    1 root root  1077 2016-10-31 21:39 fastcgi.conf.default

-rw-r--r--    1 root root  1007 2016-10-31 21:39 fastcgi_params

-rw-r--r--    1 root root  1007 2016-10-31 21:39 fastcgi_params.default

-rw-r--r--    1 root root  2837 2016-10-31 21:39 koi-utf

-rw-r--r--    1 root root  2223 2016-10-31 21:39 koi-win

-rw-r--r--    1 root root  3957 2016-10-31 21:39 mime.types

-rw-r--r--    1 root root  3957 2016-10-31 21:39 mime.types.default

-rw-r--r--    1 root root  1137 2016-10-31 21:37 nginx.conf

-rw-r--r--    1 root root  2656 2016-10-31 21:39 nginx.conf.default

-rw-r--r--    1 root root   636 2016-10-31 21:39 scgi_params

-rw-r--r--    1 root root   636 2016-10-31 21:39 scgi_params.default

-rw-r--r--    1 root root   664 2016-10-31 21:39 uwsgi_params

-rw-r--r--    1 root root   664 2016-10-31 21:39 uwsgi_params.default

-rw-r--r--    1 root root  3610 2016-10-31 21:39 win-utf

[root@venus nginx]# pwd

/etc/nginx




#4 nginx/conf.d 디렉토리 구조

default.conf 이외의 파일은 모두 주석으로 덮여 있으므로, default.conf도 모두 주석 처리하고 tomcat.conf 를 만듧니다.


[root@venus conf.d]# ls -alF

합계 24

drwxr-xr-x 2 root root 4096 2018-03-04 15:50 ./

drwxr-xr-x 4 root root 4096 2018-03-04 15:02 ../

-rw-r--r-- 1 root root  472 2018-03-04 15:03 default.conf

-rw-r--r-- 1 root root  686 2016-10-31 21:37 ssl.conf

-rw-r--r-- 1 root root  283 2016-10-31 21:37 virtual.conf




#5 tomcat.conf 설정


# upstream 은 nginx 문서를 참조, 요청을 처리할 톰캣 server 을 127.0.0.1:8080 으로 설정

# 톰캣은 8080 포트로 돌아가고 있음

upstream tomcats {

        ip_hash;

        server 127.0.0.1:8080;

}


# nginx 80번 포트 설정, 80번으로 오는 모든 요청을 443으로 redirect

server {

        listen 80;

        server_name localhost;

        return         301 https://$host$request_uri;

}


# 443으로 들어오는 모든 ( / ) 요청을 톰캣 80으로 redirect

server {

        listen 443 ssl;

        access_log /var/log/nginx/access.log;


        ssl_certificate /etc/letsencrypt/live/applit.kr/cert.pem;

        ssl_certificate_key /etc/letsencrypt/live/applit.kr/privkey.pem;

        ssl_session_cache shared:SSL:1m;

        ssl_session_timeout  10m;

        ssl_ciphers HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers on;


        location / {

                proxy_set_header        Host $http_host;

                proxy_set_header        X-Real-IP $remote_addr;

                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_set_header        X-Forwarded-Proto $scheme;

                proxy_set_header        X-NginX-Proxy true;


                proxy_pass http://tomcats;

                proxy_redirect off;

                charset utf-8;

        }

}




#6 80, 443, 8080 포트를 모두 열고 서비스 확인

모두 정상적으로 나타나면 8080은 직접 붙을 일이 없으므로 방화벽에서 차단.

이게 올바른 방법인지는 모르겠으나, 일단 이렇게 설정 완료