
์ด ๊ธ์์๋ http๋ฅผ https๋ก ๋ฆฌ๋๋ ์ ํด ALB(Application Load Balancer)์ NginX๋ฅผ ํตํด IP ์ฃผ์๋ง ๋ฌ๋ ์๋ EC2 ๋ฐฑ์๋ ์๋ฒ์ HTTPS๋ฅผ ์ ์ฉํ๊ณ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
๋๋ฉ์ธ ํธ์คํ ์ ํ ๊ณํ์ด ์๋ ํ๋ก์ ํธ๋ฅผ ํ๋ ์ค ํ๋ก ํธ์๋๋ก๋ถํฐ ๋ฐฑ์๋๋ฅผ HTTPS ์๋ฒ๋ก ๋ง๋ค์ด๋ฌ๋ผ๋ ์์ฒญ์ด ์๋ค. ๊ทธ๋์ HTTPS๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ELB์ NginX๋ฅผ ํ์ฉํด๋ณด๋ ค ํ๋ค.
HTTP๋ HyperTextTransfer Protocol์ ์ฝ์๋ก, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค. ๋ฐ๋ฉด, HTTPS๋ HTTP์ Secure Socket Layer(SSL) ๋๋ Transport Layer Security(TLS)๋ฅผ ์ถ๊ฐํ ๋ฒ์ ์ผ๋ก, ์ํธํ๋ ํต์ ์ ์ ๊ณตํ๋ค. ๋ฐ๋ผ์ HTTPS๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ 3์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๊ฐ์ ๊ฐ๋ก์ฑ๋๋ผ๋ ๋ด์ฉ์ ๋ณตํธํํ ์ ์์ด ๋ณด์์ฑ์ด ๋ฐ์ด๋๋ค.
๋ฐ์ดํฐ ๋ณด์์ด ์ค์ํด์ง ํ๋ ์ฌํ์์ ์ ๋ณด์ ์์ ํ ์ ์ก์ ํ์์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ์น ์ฌ์ดํธ์์๋ HTTPS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
Event-driven ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ ์น ์๋ฒ๋ฅผ ์๋ฏธํ๋ค. NginX๋ ์ฌ๋ฌ ์์ฒญ์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋์ ์ ์ ์์ฒญ์ด ๋ง์๋ Thread ์์ฑ ๋น์ฉ์ด ์กด์ฌํ์ง ์๋๋ค. NginX๋ฅผ ํ๋ก์ ์๋ฒ๋ก ์๋จ์ ๋๊ณ , ๋ค์ ๋ฐฑ์๋ ์๋ฒ๋ฅผ ๋ฃ์ด ๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ๋ํ ์ํ์ ์ผ๋ถ๋ถ ๋ฐฉ์งํ ์ ์๋ค.
๋ณด์์ฑ ๋ํ ํฐ ์ฅ์ ์ด๋ค. ์น ์๋ฒ๋ฅผ reverse proxy ๊ตฌ์กฐ๋ก ์ค๊ณํด NginX๋ฅผ ๊ฐ์ง ์๋ฒ๋ก ๋๊ณ ๋ค์ ์๋ ์น ์๋ฒ๋ฅผ ๋ณดํธํ ์ ์๋ค.

์ด ๊ธ์์ ํ๊ณ ์ ํ๋ ๊ฒ์ ๊ฐ๋จํ๋ค. ์ฒ์ ์์ฒญ์ AWS ELB๋ฅผ ๊ฑฐ์ณ ๋ค์ด์จ๋ค. ํด๋น ์์ฒญ์ EC2 ์๋จ์ NginX๋ก ๋ค์ด์ค๊ณ , NginX๋ ์ด๋ฅผ ๋ค์ ์๋ BE ์๋ฒ๋ก ์ ๋ฌํ๋ค. ์ด ๊ณผ์ ์ ํตํด http ์์ฒญ์ https๋ก EC2์ ์ ๋ฌํ๋ค.
EC2์ 8080ํฌํธ์ ์ด๋ฏธ ๋ฐฑ์๋ ์๋ฒ๊ฐ ๋ฐฐํฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์์ธํ ๋ฐฐํฌ ๊ณผ์ ๋ฐ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ์์ ๋ค๋ฃฌ๋ค.
์ฌ์ฉํ๋ EC2 ์ธ์คํด์ค์์ ๋ณด์ ๊ท์น์ ๋ค์ด๊ฐ HTTPS์ HTTP ์์ฒญ๋ง ๋ฐ์ ์ ์๋๋ก ์๋์ ๊ฐ์ด ์ธ๋ฐ์ด๋ ๊ท์น์ ์ค์ ํด์ค๋ค.

ACM์ AWS Certificate Manager์ ์ฝ์์ด๋ค. AWS console์์ Certificate Manager๋ก ๊ฒ์ํด ํด๋น ๋ฉ๋ด๋ก ๋ค์ด๊ฐ๋ค.
SSL ์ธ์ฆ์ ๋ฐ๊ธ์ ์ํด์๋ ๋๋ฉ์ธ ํธ์คํ ์ด ์ ํ๋์ด์ผ ํ๋ค. ํธ์คํ ์ CNAME์ ์ค์ ํด์ค๋ค. CNAME ๊ฐ์ ์์ง ์ค์ ํ ํ์ ์๋ค. ์ดํ ELB ์ค์ ์ ์๋ฃํ ๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ACM > ์ธ์ฆ์ > ์ธ์ฆ์ ์์ฒญ์์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ค.

์๋์์ ์์ ํธ์คํ
ํ ๋๋ฉ์ธ(์ฌ์ฉํ๊ณ ์ ํ๋ ๋๋ฉ์ธ)์ ์
๋ ฅํ๊ณ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ DNS ์ธ์ฆ์ผ๋ก ์ค์ ํ๊ณ ์๋ฃํ๋ค.

์์ ๋จ๊ณ๋ง ๊ฑฐ์ณค์ ๋์๋ ์์ง DNS ์ธ์ฆ์ด ์๋ฃ๋์ง ์์ ์ธ์ฆ์ ๋ฐ๊ธ์ด ์๋ฃ๋์ง ์์๋ค. DNS ์ธ์ฆ์ ์ํด์ ์ธ์ฆ์ ๋์ด ๋ฉ๋ด์์ ๋ฐ๊ธํ ์ธ์ฆ์๋ฅผ ์ ํํ๋ค. ์ธ์ฆ์ ๋ด์ ๋๋ฉ์ธ ํญ๋ชฉ์ ์์ ์ค์ ํ ๋๋ฉ์ธ๊ณผ CNAME ์ด๋ฆ, ๊ฐ์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

ํด๋น CNAME ์ด๋ฆ๊ณผ CNAME ๊ฐ์ ์๋์ ๊ฐ์ด ๋๋ฉ์ธ ํธ์คํ
์ฌ์ดํธ์์ CNAME์ผ๋ก ์ถ๊ฐํ๊ณ ์ค์ ์ ์ ์ฉํ๋ค.

์๊ฐ์ด ์ง๋๋ฉด DNS ์ธ์ฆ์ด ์๋ฃ๋์ด ์ธ์ฆ์๊ฐ ์ ์์ ์ผ๋ก ๋ฐ๊ธ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

EC2 > ๋ก๋ ๋ฐธ๋ฐ์์์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์์ฑํ๋ค. ๋ก๋ ๋ฐธ๋ฐ์ ์ ํ์ Application Load Balancer๋ก ์ ํํ๋ค. ๋ก๋ ๋ฐธ๋ฐ์ ์ด๋ฆ์ ์ค์ ํ ํ ๋ฆฌ์ค๋ ํญ์์ HTTPS๋ฅผ ์๋์ ๊ฐ์ด ์ถ๊ฐํ๋ค.

์ด๋ ์์ง ๋์ ๊ทธ๋ฃน์ด ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋์ ๊ทธ๋ฃน ์์ฑ์ ์ ํํ๊ณ ์๋ก์ด ๋์ ๊ทธ๋ฃน์ ์๋์ ๊ฐ์ด ์์ฑํ๋ค.


๋์ ๊ทธ๋ฃน์ ์์ฑํ ํ ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํด์ค๋ค. ์ด๋ health-check๋ controller๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ์ค์ ํ๋ ๊ฒ์ ์ถ์ฒํ๋ค. ๋์ ๊ทธ๋ฃน ์ค์ ์ ์๋ฃํ ํ ๋ฆฌ์ค๋ ์ค์ ์ ์๋ก ๋ง๋ ๋์ ๊ทธ๋ฃน์ ์ถ๊ฐํด์ค๋ค.

์ธ์ฆ์ ์์ค๋ ์์ ์์ฑํ ACM ์ธ์ฆ์๋ฅผ ์ ํํ๋ค.

ELB์ ๊ฐ์ฉ ์์ญ์ ์ต์ 2๊ฐ์ AZ(Available Zone)๋ฅผ ์ค์ ํด์ผ ํ๋๋ฐ, EC2๊ฐ ์ฌ์ฉํ๋ VPC์ ์๋ธ๋ท์ด ๋ค์ด๊ฐ๋๋ก ์ค์ ํด์ค๋ค. ๋ณด์ ๊ทธ๋ฃน ๋ํ EC2 ์ธ์คํด์ค์ ๋์ผํ๊ฒ ์ค์ ํด์ค๋ค.
์ ์์ ์ผ๋ก ALB๊ฐ ์ฑ์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

๋ฆฌ์ค๋ ๊ท์น ํธ์ง์์ HTTP(80)๋ก ์ ์ํ ์ HTTPS(443)๋ก ๋ฆฌ๋๋ ์
๋๋๋ก ์๋์ ๊ฐ์ด ์ค์ ํ๋ค.

ELB์ DNS(A๋ ์ฝ๋)๋ฅผ ํธ์คํ
์ฌ์ดํธ์์ ๋ ์ฝ๋๋ก ์ถ๊ฐํ๋ค. CNAME์ผ๋ก ์ค์ ํ๊ณ CNAME ๊ฐ์ผ๋ก A๋ ์ฝ๋๋ฅผ ์
๋ ฅํ๋ค. ์๋ ํ์ด๋ผ์ดํ
๋์ด ์๋ ๋ถ๋ถ์ด ์๊น ๋ง๋ค์๋ ๋ก๋ ๋ฐธ๋ฐ์์ DNS ์ด๋ฆ์ด A๋ ์ฝ๋์ด๋ค. CNAME ์
๋ ฅ ์ ์์ DNS ์ธ์ฆ์ ์งํํ ๋๋ฉ์ธ์ CNAME ์ด๋ฆ์ผ๋ก ์
๋ ฅํด์ผ ํ๋ค. CNAME ๊ฐ์ผ๋ก๋ ELB์ DNS๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.


๊ฐ๋จํ๊ฒ ์ค์นํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ด ๊ธ์์๋ ์ปค๋ฉ๋ ๋ผ์ธ์ผ๋ก ์ค์นํ๋ค.
sudo apt-get update
sudo apt-get install nginx
root path์์ /etc/nginx๋ก ์ด๋ํ๋ค. ํด๋น ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ ์๋ nginx.conf ํ์ผ์ ์์ ํ๊ธฐ ์ํด vi๋ฅผ ์ฌ์ฉํ๋ค.
sudo vi nginx.conf
http { } ์์ ์๋์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.(ํ๊ฒฝ์ ๋ง๊ฒ ์์ ํด ์ฌ์ฉํด์ผ ํ๋ค.)
server {
listen 80;
server_name ~.;
# redirect https setting
if ($http_x_forwarded_proto != 'https') {
return 301 https://$host$request_uri;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# port setting , ์๋ฒ์ port์ ๋์ผํ port๋ก pass ์์ผ์ผ ํฉ๋๋ค.
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
}
NginX๋ฅผ ์ฌ์์ํด ์ค์ ์ ์ ์ฉํ๋ค.
// restart
sudo service nginx restart
// reload
nginx -s reload
์ค์ ํ ๋๋ฉ์ธ์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ http ์์ฒญ์ด https๋ก ๋ฆฌ๋๋ ์
๋์ด ์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

ELB๋ ๋ถํ ๋ถ์ฐ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง๋ง, SSL ์ํธํ ์ธ์ฆ๋ ์ง์ํด ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๋์์ผ๋ก NginX๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง SSL ์ธ์ฆ์ ๋ฐ๊ธ๊ณผ ๊ฐฑ์ ์์ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๋จ์ ์ด ์๋ค. ์ด ํ๋ก์ ํธ์ ๊ฒฝ์ฐ์๋ AWS๋ฅผ ์ฌ์ฉํด ๋ฐฐํฌ๋ฅผ ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ELB๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ฐจํ ํ๋ก์ ํธ์์ ์ฌ์ฉํด์ผ ํ๋ workstation์์์ ๋ฐฐํฌ์์๋ ํด๋น ๋ฐฉ์์ ์ฌ์ฉํ์ง ๋ชปํ ๊ฒ์ด๋ค. ๊ทธ ๊ฒฝ์ฐ์๋ NginX์์ ์์ฒด์ ์ผ๋ก ์ง์ํ๋ reverse proxy๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ ํ์ฉํ๋ฉด ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ์ด๋ ๋์ค์ ๊ฐ๋ฐ ํ ๊ธฐ๋ก ์์ ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก https๊ฐ ํ์ํ ๋, ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ์น์ ๊ฐ๋ฐํ ๋, ๋ถํ ๋ถ์ฐ์ด ํ์ํ ์ ๋๋ก ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ์ ๐พ
Reference : NginX reverse proxy ๊ฐ๋ ๋ฐ ์ฌ์ฉ๋ฒ, AWS EC2 ๋๋ฉ์ธ ์ค์