Skip to main content

4-08. Nginx

About 2 minJavaSpringAWScrashcoursejavajdkjdk8streamspringspringframeworkspringbootawsaws-ec2

4-08. Nginx ๊ด€๋ จ


4-08. Nginx

์ ํ”„ ํˆฌ ์Šคํ”„๋ง๋ถ€ํŠธ - WikiDocs

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 ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ์ฒ˜๋Ÿผ ์™„๋ฒฝํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š” SBB๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
๋‹ค์Œ์ฒ˜๋Ÿผ ์™„๋ฒฝํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š” SBB๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
๋งŒ์•ฝ 80 ํฌํŠธ๋กœ ์ ‘์†์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 502 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ด๋Š” Nginx๋Š” ์‹คํ–‰์ด ๋˜์—ˆ๋Š”๋ฐ ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ <FontIcon icon="iconfont icon-shell"/>์„ ์‹คํ–‰ํ•˜์—ฌ ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์ž.
๋งŒ์•ฝ 80 ํฌํŠธ๋กœ ์ ‘์†์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 502 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ด๋Š” Nginx๋Š” ์‹คํ–‰์ด ๋˜์—ˆ๋Š”๋ฐ ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ start.sh์„ ์‹คํ–‰ํ•˜์—ฌ ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์ž.

์ด์ฐฌํฌ (MarkiiimarK)
Never Stop Learning.