
์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ๋คํธ์ํฌ๋ฅผ ํตํด ์์ฒญ์ ๋ณด๋ด์ฃผ๋ ์ฃผ์ฒด
์ ์ ์ธ ๋ฆฌ์์ค(
HTML,CSS,JS, ์ด๋ฏธ์ง ๋ฑ)๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํ๋ ์๋ฒ
- Nginx, Apache
๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์๋ฒ
- Tomcat, JBoss, Jeus, Spring Boot
ํ์ํ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์ฅ, ๊ด๋ฆฌํ ์ ์๋ ์์คํ
- PostgreSQL, MYSQL
HTML, CSS, JavaScript ๋ฑ ๊ณ ์ ๋ ์ฝํ
์ธ ๋ฅผ ์ ๊ณตํ๋ ์น ํ์ด์งHTML์ ์์ฑํ๋ก์๋ ์ธํฐ๋ท ์ ์์ ํ ๋ ๋ณด์์์ ๋ฌธ์ ๋ก ์ง์ ํต์ ์ ์ฃผ๊ณ ๋ฐ์ ์ ์์๋,
๊ทธ ์ฌ์ด์ ์ค๊ฐ์ญํ ๋ก ๋๋ฆฌ๋ก ํต์ ์ ์ํํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ฌ์ฉ์๊ฐ ์น์ ํตํด ์์ฒญ์ ๋ณด๋ด๋ฉด, ์ด ์์ฒญ์ ๋จผ์ ํ๋ก์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ ์น ์๋ฒ์ ๋๋ฌํ๊ณ , ์ ์ ์์์ ์น ์๋ฒ์์ ์ง์ ์ฒ๋ฆฌํ๋ฉฐ, ๋์ ์์ฒญ์ WAS๋ก ์ ๋ฌ๋์ด ์ต์ข
์ ์ผ๋ก ์๋ต์ด ํด๋ผ์ด์ธํธ์ ๋์๊ฐ๋ค.
๋ํ ํ๋ก์๋ ํฌ๊ฒ ํฌ์๋ ํ๋ก์, ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ๋๋๋ค.
ํด๋ผ์ด์ธํธ์ ์ธํฐ๋ท ์ฌ์ด์ ์์นํ์ฌ, ์ฌ์ฉ์๊ฐ ์ธํฐ๋ท์ ์ง์ ์ ๊ทผํ๋๊ฒ ์๋๋ผ ํฌ์๋ ํ๋ก์ ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ๊ณ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ ํด์ค๋ค.
๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ IP์ฃผ์๊ฐ ์น ์๋ฒ์ ๋ ธ์ถ๋์ง ์๊ณ ํน์ IP์ฃผ์, ๋๋ฉ์ธ์ ๋ํ ์ ๊ทผ์ ์ ํํ ์ ์๋ค.
ํ์ง๋ง, ์ผ๋ฐ์ ์ธ ์น ์๋น์ค ๊ตฌ์กฐ์์๋ Reverse Proxy๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค.
์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ธํฐ๋ท์ ์์ ๋กญ๊ฒ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ Forward Proxy๋ ๊ตณ์ด ํ์ ์์ (๊ธฐ์
๋ด๋ถ๋ง, ๋ณด์ ํ๋ผ์ด๋ฒ์ ๋ชฉ์ ์ผ๋๋ง ์ฌ์ฉ)

์ธํฐ๋ท๊ณผ ๋ฐฑ์๋ ์ฌ์ด์ ์์นํ์ฌ, ์ฌ์ฉ์๊ฐ ์ธํฐ๋ท์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ๋ฆฌ๋ฒ์ค ํ๋ก์๊ฐ ์ด ์์ฒญ์ ๋ฐ์ ๋ด๋ถ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ค.
๋ฐ๋ผ์ ์๋ฒ์ IP ์ฃผ์๋ฅผ ๋ ธ์ถ์ํค์ง ์์ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ๊ตฌ์ฑํ๋ ์ผ๋ฐ์ ์ธ
WEB(Apache, nginx) - WAS(Tomcat)๋ถ๋ฆฌ ํํ๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
nginx์ ์น์๋ฒ์๊ณผ ๋์์, ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ญํ ์ ์ํํ๋ค.

๋ก๋ ๋ฐธ๋ฐ์ฑ
์๋ฒ์ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๊ฒ ๋๋ฉด ํ๋์ ์๋ฒ๋ก๋ ํด๋น ์์ฒญ์ ๊ฐ๋นํ๊ธฐ ํ๋ค์ด ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ด ๋ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ๋๊ณ ์์ฒญ์ ๋ถ์ฐ์ํค๋ ๊ฒ์ด ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด๋ค. ๋ฆฌ๋ฒ์ค ํ๋ก์๋ ์ฌ๋ฌ ๋์ ์๋ฒ์ ๋ถ์ฐ์์ผ ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํฌ ์ ์๋ค.
๋ณด์
๋ฆฌ๋ฒ์ค ํ๋ก์๋ ์น ์๋ฒ ์์ ๋์ด๊ธฐ ๋๋ฌธ์ ์น ์๋ฒ์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ด ์๋ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ํตํด ์ ๊ทผํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์น ์๋ฒ์ IP๋ฅผ ๋
ธ์ถ์ํค์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์น ์๋ฒ์ ๋ํ 1์ฐจ์ ์ธ ๊ณต๊ฒฉ์ ๋ง์ ์ ์๋ค. (Proxy ์๋ฒ์ IP๋ง ๋
ธ์ถ)
์บ์ฑ
ํ๋ก์ ์๋ฒ์ ์บ์ฑ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค. (ํฌ์๋ ํ๋ก์ ์บ์ฑ๊ณผ ๋น์ทํ ๊ธฐ๋ฅ์ด๊ธฐ๋ ํ๋ฉฐ ํ๋ก์ ์๋ฒ์ ๋ณธ๋ ๊ธฐ๋ฅ์ด๋ค.)
SSL
SSL์ HTTPS๋ก ์๋ ค์ง ๋ณด์ ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ๊ธฐ๋ณธ HTTP๋ฅผ ์ํธํํ์ฌ HTTPS๋ก ๋ณํํ์ฌ ์ฌ์ฉ์๊ฐ์ ๊ฐ์ธ์ ๋ณด์ ๊ธฐ๋ฐ ์ ๋ณด๋ฅผ ๋ณดํธ ํ ์ ์๋ค.
user nginx; # ํ๋ก์ธ์ค์ ์คํ๋๋ ๊ถํ
worker_processes auto; # ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ๊ฒ์ธ์ง๋ฅผ ์ง์ , ๋ณดํต auto๋ก ์ ์ฉํ๋ค.
error_log /var/log/nginx/error.log warn; # ๋ก๊ทธ ๋ ๋ฒจ ์ค์
pid /var/run/nginx.pid; # nginx์ ๋ง์คํฐ ํ๋ก์ธ์ค id์ ๋ณด๊ฐ ์ ์ฅ๋๋ค.
events {
worker_connections 1024; # ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์ปค๋ฅ์
์ ์ซ์
}
http {
include /etc/nginx/mime.types; # ์ต์
ํญ๋ชฉ์ ์ค์ ํด๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์
default_type application/octet-stream; # ์ฅํ
์คํธ๋ฆผ ๊ธฐ๋ฐ์ http๋ฅผ ์ฌ์ฉํ๋ค๋ ์ง์์ด
# WAS, ์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ(๋ฐฑ์๋)๋ฅผ ์๋ฏธํ๋ฉฐ nginx์ ์ฐ๊ฒฐํ ์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ๋ฅผ ์ง์ ํ๋ค.
# ํ์์ ์๋ server ์ง์์ด๋ ์ฐ๊ฒฐํ ์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ์ host์ฃผ์:ํฌํธ๋ฅผ ์ง์ ํ๋ค.
upstream docker-server {
server server:8080;
}
# ํ๋์ ์น ์ฌ์ดํธ๋ฅผ ์ ์ธํ๋๋ฐ ์ฌ์ฉ.
# server ๋ธ๋ก์ด ์ฌ๋ฌ ๊ฐ์ด๋ฉด ํ ๊ฐ์ ๋จธ์ (ํธ์คํธ)์ ์ฌ๋ฌ ์น์ฌ์ดํธ๋ฅผ ์๋นํ ์์์ผ๋ฉฐ ๊ฐ์ ํธ์คํธ๋ผ๊ณ ํ๋ค.
server {
listen 80; # ์ด ์น ์ฌ์ดํธ๊ฐ ๋ฐ๋ผ๋ณด๋ ํฌํธ
server_name localhost; # ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ๋ ์๋ฒ(์ฃผ๋ก ๋๋ฉ์ธ)
# ํน์ ์น ์ฌ์ดํธ์ url์ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉํ๋ค.
location / {
root /usr/share/nginx/html; # ํ๋ฐํธ์๋ buildํ์ผ ๊ฒฝ๋ก
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /api {
proxy_pass http://docker-server; # ๋ฐฑ์๋ ์๋ฒ๋ก ์์ฒญ์ ๋ฌ
proxy_redirect off;
proxy_set_header Host $host; # HTTP์์ฒญ ์ฒ๋ฆฌ
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server_tokens off; # ํค๋์ nginx๋ฒ์ ์ ์จ๊ธฐ๋ ๊ธฐ๋ฅ์ ํ๋ค. ๋ณด์์ off๋ก ์ค์ ์ ๊ถ์ฅ
keepalive_timeout 65; # ์ ์์ ์ปค๋ฅ์
์ ์ง ์๊ฐ์ ์ง์ ํ๋ค.
include /etc/nginx/conf.d/*.conf;
}