CSS, JS, ์ด๋ฏธ์ง ๋ฆฌ์์ค ๋ก๋์ ์คํจํ์ฌ ํ๋ฉด์ด ๊นจ์ง๋ ํ์
node.js ์น์๋ฒ๋ฅผ ๋ฐฐํฌ, ๊ธฐ๋ ํ ์ ์ํ๋๋ฐ, ์์ ๊ฐ์ ํ์์ด ๋ฐ์ํ ๋๊ฐ ์๋ค.
(์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ์ง ๋ชปํด์ ์นํ์ด์ง ์์ฒด๊ฐ ์๋์ ์ ํ๊ธฐ๋ ํ๋ค)
html์ฝ๋๋ฅผ ๊ฒ์ฌํด๋ดค๋ค.
๋ชจ๋ ๋งํฌ ํ์ผ์ด https://๋ก ์ฐ๊ฒฐ๋์์๋ค. http://๋ก ๋ฐ๊พธ๊ณ ์ ์ํ๋ ์ด๋ฏธ์งํ์ผ๊ณผ main.jsํ์ผ์ด ์ ๋ถ๋ฌ์์ก๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์๋๊ตฌ์ networkํญ์ ๋ณด๋ฉด,
CSS, JS, ์ด๋ฏธ์ง ๋ฑ์ ๋ชจ๋ HTTPS๋ก ์์ฒญํ๋ฉด์ ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ผ์ด์ค์ผ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
(ec2์์ ๋ชจ๋ ๋งํฌ๋ฅผ https๋ก ๋ณ๊ฒฝํด์ ์ค๋ฅ๊ฐ ๋ฌ๋ค๊ณ ํ๋จํ๋ค. ec2๋ ๊ทธ๋ฐ ๊ถํ์ด ์๋ค.)
node.js์ ๋ฏธ๋ค์จ์ด์ helmet ๋ชจ๋์ ์ฅ์ฐฉํ๊ฑด ์๋์ง ํ์ธํด๋ณด์.
app.use(helmet());
helmet ๋ชจ๋์ ์น ์ทจ์ฝ์ฑ์ผ๋ก ๋ถํฐ ์น์๋ฒ๋ฅผ ๋ณดํธํ๋ ์ญํ ์ ํ๋๋ฐ, ๋ด๋ถ์ ์ผ๋ก ๋ค์์ ์ฝ๋๋ฅผ ์คํํ๋ค.
app.use(helmet.contentSecurityPolicy());
app.use(helmet.dnsPrefetchControl());
app.use(helmet.expectCt());
app.use(helmet.frameguard());
app.use(helmet.hidePoweredBy());
app.use(helmet.hsts());
app.use(helmet.ieNoOpen());
app.use(helmet.noSniff());
app.use(helmet.permittedCrossDomainPolicies());
app.use(helmet.referrerPolicy());
app.use(helmet.xssFilter());
์ด ์ค์ ๋ด๋ถ์ ์ผ๋ก ํธ์ถ๋๋ hsts ๋ผ๋ ๋ชจ๋์ ํตํด HTTPS(SSL/TLS) ์ฐ๊ฒฐ์ ์ ์ฉํ๋๋ก ํค๋๋ฅผ ์ธํ ํ๋ค.
๊ทธ๋์ ๋ด ์น์๋ฒ๋ http๋ก ํต์ ์ ํจ์๋ ๋ถ๊ตฌํ๊ณ ,
CSS, JS, ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ ๋ https ํต์ ์ ์๋ํจ์ผ๋ก์จ, ๋ฆฌ๋ก์ค ๋ก๋์ ์คํจํ๊ณ , ํ๋ฉด์ด ๊นจ์ง๊ณ ,
๊ฒฐ๊ตญ ๋ฉ๋ถ์ ๋น ์ง๋ ๊ฒ์ด๋ค.
ํด๊ฒฐ๋ฒ์ helmet๋ฏธ๋ค์จ์ด ํ์ฌ ์ฝ๋๋ฅผ ์ญ์ ํ๊ฑฐ๋, helmet ๋ฏธ๋ค์จ์ด์ ์์ฑ ์ค์ ๋ฑ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๋ค.
๊ทผ๋ฐ ์ฌ์ค ๋ณด์์ฑ์ ๊ณ ๋ คํ๋ฉด https๋ฅผ ํ์ฌํ๋๊ฒ ์ข๊ธด ํ๋ค.
helmet๋ชจ๋์ ์ญ์ ํ๊ณ 3001๋ฒ ํฌํธ๋ก ์ ์ํ๋ฉด ๋ฐ๋ก ์์คํ์ผ์ด ๋ก๋ฉ์ด ๋๊ณ , 2-3๋ถ ํ์ 80๋ฒํฌํธ ๋ํ ์์คํ์ผ์ด ์ ๋ก๋ ๋์ด์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'๐ DevOps > ๐ AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
EC2์ ROUTE 53 ๋๋ฉ์ธ ์ฐ๊ฒฐ (0) | 2021.04.12 |
---|---|
AWS ์ธ์ฆ์: AWS Certificage Manager (0) | 2021.04.12 |
Elastic IP ํ๋ ฅ์ IP ์ค๋ช , ๋น์ฉ (0) | 2021.04.12 |
[Ubuntu] NGINX ์ค์น + LetEncrypt ์ค์น (0) | 2021.04.09 |
Amazone EC2๋ฅผ ์ด์ฉํ ๋ฐฐํฌ (์ธ์คํด์ค ์์ฑ ~ ์ด์ ๋ฐ์) (0) | 2021.04.01 |