AWS

[Trouble Shooting] Nginx proxy ์„ค์ •

martinooo 2023. 2. 1. 12:28

๐Ÿคท‍โ™‚๏ธ Proxy?


๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์ค‘๊ณ„์ž ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์‹ค์ œ ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ์‹ค์ œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๋‚˜ํƒ€๋‚˜๊ณ , ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ๋ณด์•ˆ๋•Œ๋ฌธ๋งŒ์ด ์•„๋‹ˆ๋ผ ํ”„๋ก์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์ด ๋œ ๋ฐ์ดํ„ฐ๋“ค์„  [์บ์‹œ]๋ฅผ ์ด์šฉํ•ด ์ €์žฅํ•ด ๋‘ก๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ํ™œ์šฉํ•ด์„œ ์š”์ฒญ์‹œ๊ฐ„์„ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  


๐Ÿคท‍โ™‚๏ธ Reverse Proxy?


ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์•ž์— ์œ„์น˜ํ•˜์—ฌ ๊ฐ ์š”์ฒญ์— ์‚ฌ์šฉํ•  ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Reverse Proxy ์žฅ์ 

  • ๋™์‹œ์„ฑ : ๋‹ค์ค‘ ์—ฐ๊ฒฐ์„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณต์›๋ ฅ : ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์„œ๋น„์Šค๊ฐ€ ์žฌ๊ฐœ๋  ๋•Œ๊นŒ์ง€ ์‹คํŒจํ•œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์š”์ฒญ ์ „์†ก์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๊ฐ€ ์—ฌ์ „ํžˆ ์ž‘๋™ ์ค‘์ธ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ์ž๋™์œผ๋กœ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ™•์žฅ์„ฑ : ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ๋‹จ์ผ “๊ณต๊ฐœ ์–ผ๊ตด"์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™”ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ ˆ์ด์–ด 7๋ผ์šฐํŒ… : ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋Š” ๋ชจ๋“  ์„œ๋ฒ„๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ˆ˜์ •ํ•˜์—ฌ ๊ฐ ์š”์ฒญ์„ ๋ณด๋‚ผ ์œ„์น˜์— ๋Œ€ํ•œ ์ง€๋Šฅ์ ์ธ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์š”์ฒญ์˜ ํŠน์ • HTTP ํ—ค๋”, URL์˜ ์ผ๋ถ€, ํด๋ผ์ด์–ธํŠธ์˜ ์ง€๋ฆฌ์  ์œ„์น˜ ๋“ฑ์— ๋”ฐ๋ผ ๋ผ์šฐํŒ… ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ์บ์‹ฑ : ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋Š” ์บ์‹ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ข‹์€ ์žฅ์†Œ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ  ๊ฐ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ ์ž์ฒด ์บ์‹œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐœ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ด๋‹ค.
  • ๊ธฐํƒ€ ๊ธฐ๋Šฅ : ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์•ž์— ์•‰์Œ์œผ๋กœ์จ ๋Œ€์—ญํญ ๋˜๋Š” ์š”์ฒญ ์†๋„์— ๋”ฐ๋ฅธ ํŠธ๋ž˜ํ”ฝ ํ˜•์„ฑ, ์—ฐ๊ฒฐ ์ œํ•œ, ๋‹ค์–‘ํ•œ ์ธ์ฆ ์ฒด๊ณ„์™€์˜ ํ†ตํ•ฉ, ํ™œ๋™ ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿคท‍โ™‚๏ธ Nginx proxy_pass ์„ค์ •?


react niginx ๋ฐฐํฌํ•˜๊ธฐ ์ฐธ๊ณ  [AWS EC2] EC2์— React ์•ฑ + Node.js ์„œ๋ฒ„ ๋ฐฐํฌ 2 - Nginx + React (tistory.com)

 

[AWS EC2] EC2์— React ์•ฑ + Node.js ์„œ๋ฒ„ ๋ฐฐํฌ 2 - Nginx + React

์ด์ „ ๊ธ€์—์„œ EC2๋ฅผ ์œ„ํ•œ VPC ๊ตฌ์„ฑ ๋ฐ ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ–ˆ๊ณ  EC2๋ฅผ ์ƒ์„ฑํ•˜์—ฌ SSH๋กœ ์ ‘์†ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด์ „์— ์ƒ์„ฑํ•œ EC2์— Nginx๋ฅผ ์„ค์น˜ํ•˜๊ณ  React๋กœ ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜

developerbee.tistory.com

 

ํŒŒ์ผ๋กœ์ด๋™

sudo vi /etc/nginx/sites-available/ํŒŒ์ผ.conf

 

nginx server ์…‹ํŒ…

server {
  listen 80;
  location / {
    root   /home/user/myapp/build;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }
  
  location /api/ {
    proxy_pass http://[์„œ๋ฒ„ url];
  }
}

proxy_pass๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  ๋‚˜๋ฉด, ํ”„๋ก ํŠธ์—์„œ ์„œ๋ฒ„์— ์ง์ ‘ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์š”์ฒญ์„ ์ž๊ธฐ์ž์‹  url๋กœ ๋ณด๋‚ด๋ฉด proxy์—์„œ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์‹ค์ œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค. 

 

์˜ˆ๋ฅผ ๋“œ๋ฉด axios.get(" ์„œ๋ฒ„url ")๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋ก์‹œ ์„ค์ • ํ›„์— ์„œ๋ฒ„url ๋Œ€์‹  ํด๋ผ์ด์–ธํŠธ url๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด proxy๊ฐ€ ์‹ค์ œ ์„œ๋ฒ„์— ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์„œ ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์„ ํ•ด์ค€๋‹ค ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์•ˆ์ „ํ•˜๋‹ค.