4-08. Nginx
4-08. Nginx ๊ด๋ จ
SBB ์๋น์ค๋ ํ์ฌ 8080๋ฒ ํฌํธ๋ก ์๋น์ค๋ฅผ ํ๊ณ ์๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ์ธํฐ๋ท ์๋น์ค๋ 8080๋ฒ ํฌํธ ๋์ 80๋ฒ ํฌํธ๋ก ์๋น์ค๋ฅผ ํ๋ค. 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ ์ ์์ดํผ:80
๊ณผ ๊ฐ์ด ์ฌ์ฉํด๋ ๋๊ณ ๊ณ ์ ์์ดํผ
์ฒ๋ผ 80๋ฒ ํฌํธ๋ฅผ ์๋ตํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ์๋ํ๋ฉด 80๋ฒ ํฌํธ๊ฐ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ(Default) ํฌํธ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฒ ์ฅ์์๋ SBB ์๋น์ค๋ฅผ 80๋ฒ ํฌํธ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
์คํ๋ง๋ถํธ๋ฅผ 80 ํฌํธ๋ก ์๋น์คํ๊ธฐ
์คํ๋ง๋ถํธ ์๋น์ค๋ฅผ ์์ํ ๋ -Dserver.port=80์ ๊ฐ์ ์ต์ ์ ์ถ๊ฐํ์ฌ ์คํ๋ง๋ถํธ๋ฅผ ์์ํ๋ฉด 80๋ฒ ํฌํธ๋ก ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค. ๋จ, 80๋ฒ ํฌํธ๋ก ์๋น์คํ๊ธฐ ์ํด์๋ ๋ฃจํธ ๊ถํ์ผ๋ก ์คํ๋ง๋ถํธ๋ฅผ ์์ํด์ผ ํ๋ค.
์ฆ, ๋ค์๊ณผ ๊ฐ์ด ์คํํ๋ฉด 80๋ฒ ํฌํธ๋ก ์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค.
sudo java -Dserver.port=80 -jar sbb-0.0.2.jar
ํ์ง๋ง ์์ ๊ฐ์ด ์คํ๋ง๋ถํธ์์ ์ง์ 80 ํฌํธ๋ฅผ ์ง์ ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ถ์ฒํ์ง ์๋๋ค. ์๋ํ๋ฉด ๋ฃจํธ ๊ถํ์ผ๋ก ์คํํด์ผ ํ๋ค๋ ๋จ์ ์ธ์๋ ๋ฌด์๋ณด๋ค๋ SSL์ ์ ์ฉํ์ฌ https ์๋น์ค๋ฅผ ์ด์ํ๊ธฐ๊ฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. SSL์ ์ ์ฉํ๋ ค๋ฉด Nginx๋ Apache์ ๊ฐ์ ์น์๋ฒ๊ฐ ํ์ํ๋ค.
SSL์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋๋ฉ์ธ์ด ํ์ํ๋ฏ๋ก SSL์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์กฐ๊ธ ํ์ ์์๋ณด์.
Nginx๋ฅผ ์ฌ์ฉํ์ฌ 80 ํฌํธ๋ก ์๋น์คํ๊ธฐ
Nginx๋ ๋์ ์ฑ๋ฅ์ ์ํด์ ๊ฐ๋ฐ๋ ์น ์๋ฒ๋ก ์ค์ ์ด ๋ฌด์ฒ ๊ฐ๋จํ์ฌ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฒ์๋ Nginx์ ์คํ๋ง๋ถํธ๋ฅผ ์ฐ๋ํ์ฌ 80๋ฒ ํฌํธ๋ก ์๋น์คํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
Nginx ์ค์น
๋ค์๊ณผ ๊ฐ์ด ๋ฃจํธ ๊ถํ์ผ๋ก Nginx๋ฅผ ์ค์นํ์.
sudo apt install nginx
๋๋ต 10์ด ๋ด์ธ๋ก ์ค์น๊ฐ ๋ ๊ฒ์ด๋ค.
Nginx ์ค์
๊ทธ๋ฆฌ๊ณ ๋ค์์ฒ๋ผ /etc/nginx/sites-available
๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์.
cd /etc/nginx/sites-available/
./etc/nginx/sites-available
๋๋ ํฐ๋ฆฌ๋ Nginx์ ์ค์ ํ์ผ๋ค์ด ์์นํ ๋๋ ํฐ๋ฆฌ์ด๋ค. ์ต์ด ์ค์น์์๋ deafult
๋ผ๋ ์ค์ ํ์ผ๋ง ์กด์ฌํ๋ค.
SBB ์๋น์ค์ ๋ํ Nginx์ ์ค์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์์ฑํ์.
sudo nano sbb
๊ทธ๋ฆฌ๊ณ sbb
ํ์ผ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์.
ํ์ผ๋ช :
/etc/nginx/sites-available/
sbb
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
listen 80
์ ์น ์๋ฒ๋ฅผ 80 ํฌํธ๋ก ์๋น์ค ํ๋ค๋ ์๋ฏธ์ด๋ค. HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ณธํฌํธ๋ 80์ด๋ค. ๋ฐ๋ผ์ ์ด์ http://3.37.58.70:8080
๋์ ํฌํธ๋ฅผ ์๋ตํ์ฌ http://3.37.58.70
์ฒ๋ผ ์น ๋ธ๋ผ์ฐ์ ์์ ์ ์ ํ ์ ์๋ค.
server_name์๋ localhost
๋ฅผ ์
๋ ฅํ๋ค. ๋ง์ฝ ip์ ์ฐ๊ฒฐ๋ ๋๋ฉ์ธ์ ๊ตฌ์
ํ์๋ค๋ฉด localhost ๋์ ํด๋น ๋๋ฉ์ธ๋ช
์ ์ ์ด์ฃผ๋ฉด ๋๋ค.location / { ... }
์ /
์ ํด๋น๋๋ URL, ์ฆ ๋ชจ๋ ์์ฒญ์ ๋ํ ์ค์ ์ ๋ด๋นํ๋ ์์ญ์ด๋ค. ์ธ๋ถ ์ค์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
proxy_pass
- Nginx ์น์๋ฒ์ ๋ชจ๋ ์์ฒญ์http://localhost:8080
๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋ค.proxy_set_header
-localhost:8080
๋ก ์คํ๋ ์คํ๋ง๋ถํธ ์๋ฒ์ ํน์ ํค๋๊ฐ์ ์ ๋ฌํ๊ธฐ ์ํด์ proxy_set_header๋ฅผ ์ฌ์ฉํ๋ค. (Nginx๋ฅผ ํตํด์ ์คํ๋ง๋ถํธ์ ํฐ์บฃ์๋ฒ๋ก ์์ฒญ์ด ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ "Remote IP" ํค๋๊ฐ์ด ์ค์ ๊ฐ์ด ์๋ 127.0.0.1 ์ฒ๋ผ ์๋ชป ์ ๋ฌ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.) ์ด์ ์์ฑํsbb
ํ์ผ์ Nginx๊ฐ ํ๊ฒฝ ํ์ผ๋ก ์ฝ์ ์ ์๋๋ก ์ค์ ํด์ผ ํ๋ค.
๋ค์์ฒ๋ผ /etc/nginx/sites-enabled
๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์.
cd /etc/nginx/sites-enabled/
.sites-enabled
๋๋ ํฐ๋ฆฌ๋ site-available
๋๋ ํฐ๋ฆฌ์ ์๋ ์ค์ ํ์ผ ์ค์์ ํ์ฑํํ๊ณ ์ถ์ ๊ฒ์ ๋งํฌ๋ก ๊ด๋ฆฌํ๋ ๋๋ ํฐ๋ฆฌ์ด๋ค.
ls
๋ช
๋ น์ ์ํํ๋ฉด ํ์ฌ default
์ค์ ํ์ผ๋ง ๋งํฌ๋จ์ ํ์ธํ ์ ์๋ค.
ls
#
# default
์ด์ default
๋งํฌ๋ ์ญ์ ํ๊ณ sbb
ํ์ผ์ ๋งํฌํ๋๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค.
๋จผ์ ๋ค์์ฒ๋ผ default
๋งํฌ๋ฅผ ์ญ์ ํ์.
sudo rm default
๊ทธ๋ฆฌ๊ณ ๋ค์์ฒ๋ผ sbb
ํ์ผ์ ๋งํฌํ์.
sudo ln -s /etc/nginx/sites-available/sbb
ls
๋ช
๋ น์ ์ํํ๋ฉด default
๋ ์ฌ๋ผ์ง๊ณ sbb
๋งํฌ๋ง ๋จ์ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ls
#
# sbb
Nginx ์คํ
Nginx๋ ์ค์นํ ๋ ์๋์ผ๋ก ์คํ๋๋ฏ๋ก ์์์ ์์ฑํ Nginx ์ค์ ์ ์ ์ฉํ๋ ค๋ฉด Nginx๋ฅผ ๋ค์์ฒ๋ผ ๋ค์ ์์ํด์ผ ํ๋ค.
sudo systemctl restart nginx
ํน์ Nginx ์ค์ ํ์ผ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด?
Nginx์ ์ค์ ํ์ผ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
sudo nginx -t
#
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -t
๋ช
๋ น ์ํ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ค์ ์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ์ด๋ฏ๋ก Nginx์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์ง ์์ ๊ฒ์ด๋ค.
Nginx๋ฅผ ์ค์งํ๋ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ๋ค.
sudo systemctl stop nginx
Nginx๋ฅผ ์์ํ๋ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ๋ค.
sudo systemctl start nginx
SBB ์๋ ํ์ธํ๊ธฐ
Nginx๋ฅผ ์ ์ฉํ์ผ๋ ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ URL์ ์ ์ํด ๋ณด์.
http://3.37.58.70/
(์ฌ๋ฌ๋ถ์ ๊ณ ์ ์์ดํผ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์.)
์น์๋ฒ(Nginx)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด์ ๊ณผ ๋ฌ๋ฆฌ :8080
๊ณผ ๊ฐ์ ํฌํธ๋ฒํธ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ด์ก๋ค. Nginx๋ฅผ ์ฌ์ฉํ๋ฉด HTTP ๊ธฐ๋ณธ ํฌํธ์ธ 80 ํฌํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. 80 ํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ http://3.37.58.70:80
์ฒ๋ผ ์ฌ์ฉํด๋ ๋์ง๋ง :80
์ ์๋ตํ ์ ์๋ค.