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은 직접 붙을 일이 없으므로 방화벽에서 차단.
이게 올바른 방법인지는 모르겠으나, 일단 이렇게 설정 완료