{"id":1728,"date":"2026-07-06T14:02:32","date_gmt":"2026-07-06T14:02:32","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1728"},"modified":"2026-08-31T07:32:51","modified_gmt":"2026-08-31T07:32:51","slug":"nginx-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1728","title":{"rendered":"Nginx \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uace0\uc131\ub2a5 <strong>\uc6f9 \uc11c\ubc84(Web Server)<\/strong>\uc774\uc790 <strong>Reverse Proxy, Load Balancer, HTTP Cache, SSL\/TLS \uc885\ub8cc \uc9c0\uc810<\/strong> \ub4f1\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc11c\ubc84 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c\uc5d0\ub294 \uc815\uc801 \ud30c\uc77c\uc744 \ube60\ub974\uac8c \uc81c\uacf5\ud558\uae30 \uc704\ud55c \uc6f9 \uc11c\ubc84\ub85c \uac1c\ubc1c\ub410\uc9c0\ub9cc, \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84 \uc55e\uc5d0 \ubc30\uce58\ud574\uc11c \uc678\ubd80 \uc694\uccad\uc744 \ubc1b\uc544 \ub0b4\ubd80 \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\ub294 <strong>Reverse Proxy<\/strong> \uc6a9\ub3c4\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uc6f9 \uc11c\ube44\uc2a4 \uad6c\uc870\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Static Files \/ Web Server \/ REST API Server \/ WebSocket Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 \ubaa8\ub4e0 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ucc98\ub9ac\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 <strong>\ub124\ud2b8\uc6cc\ud06c \uc55e\ub2e8\uc5d0\uc11c \uc694\uccad\uc744 \ubc1b\uc544 \uc801\uc808\ud55c \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\uace0, \uc815\uc801 \ub9ac\uc18c\uc2a4\ub97c \uc81c\uacf5\ud558\uace0, \uc5f0\uacb0\uc744 \uad00\ub9ac\ud558\ub294 \uc5ed\ud560<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Web Server<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6f9 \uc11c\ubc84\uc758 \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \uc5ed\ud560\uc740 HTTP \uc694\uccad\uc744 \ubc1b\uace0 \ud30c\uc77c\uc744 \ubc18\ud658\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/index.html\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \uc694\uccad\ud558\uba74 Nginx\uac00 \ud574\ub2f9 \ud30c\uc77c\uc744 \ucc3e\uc544 \uc751\ub2f5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Browser -&gt; GET \/index.html -&gt; Nginx -&gt; index.html -&gt; HTTP Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">HTML\ubfd0\ub9cc \uc544\ub2c8\ub77c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CSS \/ JavaScript \/ Image \/ Font \/ Video \/ JSON\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uc815\uc801 \ud30c\uc77c\ub3c4 \uc81c\uacf5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\uc801 \ucf58\ud150\uce20\uc640 \ub3d9\uc801 \ucf58\ud150\uce20<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6f9 \uc11c\ubc84\ub97c \uc774\ud574\ud560 \ub54c \uc815\uc801 \ucf58\ud150\uce20\uc640 \ub3d9\uc801 \ucf58\ud150\uce20\ub97c \uad6c\ubd84\ud558\uba74 Nginx\uc758 \uc5ed\ud560\uc774 \uba85\ud655\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc815\uc801 \ucf58\ud150\uce20<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubbf8 \ub9cc\ub4e4\uc5b4\uc838 \uc788\ub294 \ud30c\uc77c\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/index.html \/style.css \/app.js \/logo.png\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 \uc9c1\uc811 \uc77d\uc5b4\uc11c \ubc18\ud658\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\uc801 \ucf58\ud150\uce20<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uccad\uc5d0 \ub530\ub77c \uc11c\ubc84\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud574\uc11c \uacb0\uacfc\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/api\/users\/100\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \uc694\uccad\ud558\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc870\ud68c\ud55c \ub4a4 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \ubc18\ud658\ud574\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc740 \uc77c\ubc18\uc801\uc73c\ub85c Nginx\uac00 \ucc98\ub9ac\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; API Server -&gt; Database\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Reverse Proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub97c \uc2e4\ubb34\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uac00\uc7a5 \ub300\ud45c\uc801\uc778 \uc774\uc720\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse Proxy\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc694\uccad\uc744 \ub300\uc2e0 \ubc1b\uc544 \ub0b4\ubd80 \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\ub294 \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP Request -&gt; Nginx -&gt; Proxy -&gt; Application Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc2e4\uc81c \uc11c\ubc84 \uad6c\uc870\uac00<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx -&gt; Node.js :3000\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub77c\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ubd80 \uc0ac\uc6a9\uc790\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;example.com\/api\/users\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c \uc694\uccad\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc774 \uc694\uccad\uc744 \ub0b4\ubd80\uc801\uc73c\ub85c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;localhost:3000\/api\/users\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\ub294 Node.js \uc11c\ubc84\uc758 <code>3000<\/code> \ud3ec\ud2b8\ub97c \uc9c1\uc811 \uc54c \ud544\uc694\uac00 \uc5c6\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Reverse Proxy\ub97c \uc0ac\uc6a9\ud558\ub294 \uc774\uc720<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud788 \uc694\uccad\uc744 \uc804\ub2ec\ud558\ub294 \uac83 \uc774\uc0c1\uc758 \uc7a5\uc810\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; API Server 1 \/ API Server 2 \/ API Server 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ubd80\uc5d0\uc11c\ub294 Nginx \ud558\ub098\ub9cc \ubc14\ub77c\ubcf4\uace0 \ub0b4\ubd80 \uc11c\ubc84\ub294 \uc790\uc720\ub86d\uac8c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \uae30\ub2a5\uc744 Nginx\uc5d0\uc11c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SSL\/TLS \/ Load Balancing \/ Access Control \/ Rate Limiting \/ Compression \/ Caching \/ Static File Serving \/ Request Routing\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84\uac00 HTTP \uc5f0\uacb0 \uad00\ub9ac\uc640 \uc678\ubd80 \ub178\ucd9c\uc744 \uc804\ubd80 \ub2f4\ub2f9\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Reverse Proxy \uc124\uc815<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac04\ub2e8\ud55c \uc608\uc2dc\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name example.com;\n\n    location \/api\/ {\n        proxy_pass http:\/\/localhost:3000;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; \/api\/* -&gt; Nginx :80 -&gt; proxy_pass -&gt; Node.js :3000\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 <code>\/api\/<\/code> \uc694\uccad\uc744 Node.js \uc11c\ubc84\ub85c \uc804\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc5ec\ub7ec \uc11c\ubc84\ub85c \ubd84\ub9ac\ud558\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc694\uccad \uc885\ub958\uc5d0 \ub530\ub77c \ub2e4\ub978 \uc11c\ubc84\ub85c \uc804\ub2ec\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; \/api\/ -&gt; API Server \/ \/ws\/ -&gt; WebSocket Server \/ \/ -&gt; Static Web\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location \/api\/ {\n    proxy_pass http:\/\/api-server:3000;\n}\n\nlocation \/ws\/ {\n    proxy_pass http:\/\/game-server:8080;\n}\n\nlocation \/ {\n    root \/var\/www\/html;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 <strong>URL\uc744 \uae30\uc900\uc73c\ub85c \uc694\uccad\uc744 \ubd84\ubc30\ud558\ub294 \ub77c\uc6b0\ud130 \uc5ed\ud560<\/strong>\ub3c4 \ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Load Balancing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uac00 \ud558\ub098\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx -&gt; API Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\ub9cc \ud2b8\ub798\ud53d\uc774 \uc99d\uac00\ud558\uba74 \uc5ec\ub7ec \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Server 1 \/ Server 2 \/ Server 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc5ec\ub7ec \uc11c\ubc84\uc5d0 \uc694\uccad\uc744 \ubd84\uc0b0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>upstream api_servers {\n    server 10.0.0.1:3000;\n    server 10.0.0.2:3000;\n    server 10.0.0.3:3000;\n}\n\nserver {\n    location \/api\/ {\n        proxy_pass http:\/\/api_servers;\n    }\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Load Balancing \ubc29\uc2dd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c Round Robin \ubc29\uc2dd\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request 1 -&gt; Server 1 -&gt; Request 2 -&gt; Server 2 -&gt; Request 3 -&gt; Server 3 -&gt; Request 4 -&gt; Server 1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8 \uc678\uc5d0\ub3c4 \ud658\uacbd\uc5d0 \ub530\ub77c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Least Connections \/ IP Hash \/ Hash\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc758 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud55c Round Robin\uc774 \ud56d\uc0c1 \ucd5c\uc120\uc778 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc138\uc158 \uc0c1\ud0dc\uac00 \ud2b9\uc815 \uc11c\ubc84\uc5d0 \ubb36\uc5ec \uc788\ub2e4\uba74 \uc694\uccad\uc744 \ub2e4\ub978 \uc11c\ubc84\ub85c \ubcf4\ub0b4\ub294 \uc21c\uac04 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc11c\ubc84\ub97c \uc5ec\ub7ec \ub300 \uc0ac\uc6a9\ud558\ub294 \uad6c\uc870\uc5d0\uc11c\ub294 <strong>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc0c1\ud0dc \uad00\ub9ac \ubc29\uc2dd<\/strong>\ub3c4 \ud568\uaed8 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Stateless \uc11c\ubc84\uc640 Nginx<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Load Balancing\uc744 \uc81c\ub300\ub85c \ud65c\uc6a9\ud558\ub824\uba74 API \uc11c\ubc84\ub97c Stateless\ud558\uac8c \ub9cc\ub4dc\ub294 \uac83\uc774 \uc720\ub9ac\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub85c\uadf8\uc778 \uc138\uc158\uc744 \ud2b9\uc815 \uc11c\ubc84\uc758 \uba54\ubaa8\ub9ac\uc5d0\ub9cc \uc800\uc7a5\ud558\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Server 1 \/ Server 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5d0\uc11c \uccab \ubc88\uc9f8 \uc694\uccad\uc774 Server 1\ub85c \uac00\uace0 \ub450 \ubc88\uc9f8 \uc694\uccad\uc774 Server 2\ub85c \uac00\uba74 \uc138\uc158\uc744 \ucc3e\uc9c0 \ubabb\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc138\uc158\uc744<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Redis \/ Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uc678\ubd80 \uc800\uc7a5\uc18c\uc5d0 \ub450\uac70\ub098 JWT \uac19\uc740 \ubc29\uc2dd\uc73c\ub85c \uc0c1\ud0dc \uc758\uc874\uc131\uc744 \uc904\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx -&gt; API 1 \/ API 2 \/ API 3 -&gt; Redis\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx \uc790\uccb4\uac00 \uc138\uc158 \ubb38\uc81c\ub97c \ud574\uacb0\ud574\uc8fc\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SSL\/TLS Termination<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 HTTPS\ub97c \ucc98\ub9ac\ud558\ub294 \uc55e\ub2e8\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTPS -&gt; Nginx -&gt; HTTP -&gt; Application Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uc5d0\uc11c TLS \uc554\ud638\ud654\uc640 \ubcf5\ud638\ud654\ub294 Nginx\uac00 \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c <strong>TLS Termination<\/strong>\uc774\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84\ub9c8\ub2e4 HTTPS \uc778\uc99d\uc11c\ub97c \uad00\ub9ac\ud558\ub294 \uac83\ubcf4\ub2e4 \uc55e\ub2e8\uc758 Nginx\uc5d0\uc11c \ucc98\ub9ac\ud558\uba74 \uad00\ub9ac\uac00 \ub2e8\uc21c\ud574\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \ud658\uacbd\uc5d0\uc11c\ub294 \ub0b4\ubd80 \ud1b5\uc2e0\ub3c4 HTTPS\ub85c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0\uac00 \uc788\uc73c\ubbc0\ub85c \ubb34\uc870\uac74 HTTP\ub85c \uc804\ub2ec\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">HTTP\uc640 HTTPS Redirect<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP \uc694\uccad\uc744 HTTPS\ub85c \uac15\uc81c\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name example.com;\n\n    return 301 https:\/\/example.com$request_uri;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:\/\/example.com -&gt; 301 Redirect -&gt; https:\/\/example.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\uc801 \ud30c\uc77c \uc81c\uacf5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc815\uc801 \ud30c\uc77c \uc11c\ubc84\ub85c\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n\n    root \/var\/www\/html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/www\/html\/ -&gt; index.html \/ css\/ \/ js\/ \/ images\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \uc788\ub2e4\uba74 Nginx\uac00 \uc9c1\uc811 \ud30c\uc77c\uc744 \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">React\ub098 Vue \uac19\uc740 SPA\ub97c \ube4c\ub4dc\ud55c \uacb0\uacfc\ubb3c\uc744 Nginx\uc5d0\uc11c \uc11c\ube44\uc2a4\ud558\ub294 \uad6c\uc131\ub3c4 \ud754\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>React Source -&gt; npm run build -&gt; dist\/ -&gt; Nginx -&gt; Browser\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SPA\uc640 Nginx<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">React \uac19\uc740 SPA\uc5d0\uc11c\ub294 \ubaa8\ub4e0 URL\uc774 \uc2e4\uc81c \ud30c\uc77c\ub85c \uc874\uc7ac\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/ -&gt; \/users -&gt; \/settings -&gt; \/inventory\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \ubaa8\ub450 React Router\uc5d0\uc11c \ucc98\ub9ac\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c Nginx\uac00 <code>\/users<\/code>\ub77c\ub294 \uc2e4\uc81c \ud30c\uc77c\uc744 \ucc3e\uc73c\uba74 404\uac00 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c fallback\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location \/ {\n    try_files $uri $uri\/ \/index.html;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\uba74 \uc874\uc7ac\ud558\ub294 \ud30c\uc77c\uc740 \uadf8\ub300\ub85c \ubc18\ud658\ud558\uace0, \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uacbd\ub85c\ub294 <code>index.html<\/code>\ub85c \uc804\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/users -&gt; Nginx -&gt; \uc2e4\uc81c \ud30c\uc77c \uc788\uc74c -&gt; \ud30c\uc77c \ubc18\ud658 \/ \uc2e4\uc81c \ud30c\uc77c \uc5c6\uc74c -&gt; index.html\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ud6c4 \ub77c\uc6b0\ud305\uc740 \ube0c\ub77c\uc6b0\uc800\uc758 SPA Router\uac00 \ucc98\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">WebSocket Proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 WebSocket \uc5f0\uacb0\ub3c4 Proxy\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18 HTTP\uc640 WebSocket\uc740 \uc5f0\uacb0 \ubc29\uc2dd\uc774 \ub2e4\ub974\uae30 \ub54c\ubb38\uc5d0 \ud544\uc694\ud55c Header\ub97c \uc804\ub2ec\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location \/ws\/ {\n    proxy_pass http:\/\/localhost:8080;\n\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; WebSocket -&gt; Nginx -&gt; WebSocket Proxy -&gt; WebSocket Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub3c4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; WebSocket \/ Gateway -&gt; Game Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uac8c\uc784\uc758 \uc2e4\uc2dc\uac04 \ud1b5\uc2e0 \ud504\ub85c\ud1a0\ucf5c\uc774 TCP\/UDP \uae30\ubc18\uc774\ub77c\uba74 Nginx\uc758 HTTP Reverse Proxy\ub9cc\uc73c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. Nginx\uc758 HTTP \uae30\ub2a5\uacfc Stream \uae30\ub2a5\uc744 \uad6c\ubd84\ud574\uc11c \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">TCP \/ UDP Proxy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 HTTP \uc11c\ubc84\ub9cc \uc81c\uacf5\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>stream<\/code> \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uba74 TCP\/UDP \uae30\ubc18 \ud2b8\ub798\ud53d\uc744 Proxy\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; TCP -&gt; Nginx -&gt; Game Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 TCP \uae30\ubc18 \uc11c\ubc84 \uc55e\uc5d0 Nginx\ub97c \ubc30\uce58\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uac8c\uc784 \uc11c\ubc84\uc758 \uc2e4\uc2dc\uac04 \ub124\ud2b8\uc6cc\ud06c \uad6c\uc870\uc5d0\uc11c\ub294 Nginx\ub9cc \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc815\ub2f5\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\ud1a0\ucf5c\uacfc \uc11c\ubc84 \uad6c\uc870\uc5d0 \ub530\ub77c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx \/ HAProxy \/ L4 Load Balancer \/ Cloud Load Balancer \/ Dedicated Gateway\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc744 \uc120\ud0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Request Routing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc694\uccad\uc758 \uacbd\ub85c, Host, Header \ub4f1\uc744 \uae30\uc900\uc73c\ub85c \uc801\uc808\ud55c \uc11c\ubc84\ub97c \uc120\ud0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>api.example.com -&gt; API Server\ngame.example.com -&gt; Game Server\nwww.example.com -&gt; Web Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \ub3c4\uba54\uc778\ubcc4\ub85c \ubd84\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/api -&gt; API\n\/admin -&gt; Admin Server\n\/static -&gt; Static Files\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc URL \uae30\uc900\uc73c\ub85c \ubd84\ub9ac\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Header \ucc98\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse Proxy\uc5d0\uc11c\ub294 Client\uc758 HTTP Header\ub97c \ub0b4\ubd80 \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\uac70\ub098 \uc218\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c \uc2e4\uc81c Client IP\ub97c \uc804\ub2ec\ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 Header\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>proxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header Host $host;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; IP = 123.123.123.123 -&gt; Nginx -&gt; X-Real-IP = 123.123.123.123 -&gt; API Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse Proxy\ub97c \uc0ac\uc6a9\ud558\uba74 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84 \uc785\uc7a5\uc5d0\uc11c\ub294 \uc9c1\uc811 Client\uc640 \ud1b5\uc2e0\ud558\ub294 \uac83\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0 Proxy \ud658\uacbd\uc5d0 \ub9de\uac8c IP \uc815\ubcf4\ub97c \uc804\ub2ec\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Access Log<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc694\uccad \uc815\ubcf4\ub97c \ub85c\uadf8\ub85c \ub0a8\uae38 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IP \/ Method \/ URL \/ Status Code \/ Response Size \/ Request Time \/ User Agent\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc744 \uae30\ub85d\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uadf8\ub97c \ubcf4\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/api\/users 200 \/ POST \/api\/login 401 \/ GET \/static\/app.js 200\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uc694\uccad \ud750\ub984\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b4\uc601 \ud658\uacbd\uc5d0\uc11c\ub294 \uc7a5\uc560 \ubd84\uc11d\uacfc \ud2b8\ub798\ud53d \ubd84\uc11d\uc5d0 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error Handling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uc5d0\uc11c HTTP \uc624\ub958 \ud398\uc774\uc9c0\ub97c \uc9c1\uc811 \ucc98\ub9ac\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>404 \/ 403 \/ 500 \/ 502 \/ 503 \/ 504\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc758 \uc0c1\ud0dc \ucf54\ub4dc\ub97c \uae30\uc900\uc73c\ub85c \ubcc4\ub3c4\uc758 \uc751\ub2f5\uc744 \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 Reverse Proxy \ud658\uacbd\uc5d0\uc11c\ub294 <code>502 Bad Gateway<\/code>\ub098 <code>504 Gateway Timeout<\/code>\uc774 \uc790\uc8fc \ub4f1\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; API Server -&gt; \uc5f0\uacb0 \uc2e4\ud328\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc API \uc11c\ubc84\uac00 \uc8fd\uc5b4 \uc788\uac70\ub098 \uc5f0\uacb0\ud560 \uc218 \uc5c6\ub2e4\uba74 Nginx\uc5d0\uc11c 502\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Nginx \uc624\ub958\ub77c\uace0 \ud574\uc11c \ubc18\ub4dc\uc2dc Nginx \uc790\uccb4\uac00 \ubb38\uc81c\ub77c\ub294 \ub73b\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Timeout<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse Proxy\uc5d0\uc11c\ub294 Timeout \uc124\uc815\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 API \uc11c\ubc84\uac00 \ub108\ubb34 \uc624\ub798 \uc751\ub2f5\ud558\uc9c0 \uc54a\uc73c\uba74 Nginx\uac00 \uacc4\uc18d \uc5f0\uacb0\uc744 \uc720\uc9c0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uc124\uc815\uc73c\ub85c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>proxy_connect_timeout 5s;\nproxy_read_timeout 60s;\nproxy_send_timeout 60s;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ubb34\uc870\uac74 \uc9e7\uac8c \uc124\uc815\ud558\ub294 \uac83\ub3c4 \ubb38\uc81c\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\uc77c \uc5c5\ub85c\ub4dc\ub098 \uae34 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 API\ub77c\uba74 \uc2e4\uc81c \ucc98\ub9ac \uc2dc\uac04\uc5d0 \ub9de\uac8c \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Buffering<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 Proxy \uc751\ub2f5\uc744 Buffering\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application Server -&gt; Nginx -&gt; Buffer -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \ud1b5\ud574 \ub0b4\ubd80 \uc11c\ubc84\uc640 Client\uc758 \uc804\uc1a1 \uc18d\ub3c4 \ucc28\uc774\ub97c \uc5b4\ub290 \uc815\ub3c4 \ud761\uc218\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Streaming\uc774\ub098 SSE \uac19\uc740 \ud2b9\uc218\ud55c \ud1b5\uc2e0\uc5d0\uc11c\ub294 Buffering \uc124\uc815\uc774 \uc11c\ube44\uc2a4 \ud2b9\uc131\uc5d0 \uc601\ud5a5\uc744 \uc904 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Compression<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 HTTP \uc751\ub2f5\uc744 \uc555\ucd95\ud574\uc11c \uc804\uc1a1\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c gzip\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Server -&gt; \ud070 \uc751\ub2f5 -&gt; Nginx -&gt; gzip -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc751\ub2f5 \ub370\uc774\ud130 \ud06c\uae30\ub97c \uc904\uc5ec \ub124\ud2b8\uc6cc\ud06c \uc804\uc1a1\ub7c9\uc744 \uc904\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc555\ucd95\uc5d0\ub294 CPU \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud558\uae30 \ub54c\ubb38\uc5d0 \ubb34\uc870\uac74 \ub192\uc740 \uc555\ucd95\ub960\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc740 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 Proxy Cache\ub97c \uc0ac\uc6a9\ud574\uc11c \ub3d9\uc77c\ud55c \uc694\uccad\uc758 \uacb0\uacfc\ub97c \uc800\uc7a5\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \uc694\uccad\uc740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; API Server -&gt; Response -&gt; Cache \uc800\uc7a5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uc694\uccad\uc740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Cache\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cache Hit\uac00 \ubc1c\uc0dd\ud558\uba74 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84\uae4c\uc9c0 \uc694\uccad\uc774 \uc804\ub2ec\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc5b4\ub5a4 \ub370\uc774\ud130\ub97c \uce90\uc2f1\ud574\ub3c4 \uc548\uc804\ud55c\uc9c0\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub370\uc774\ud130 \ud2b9\uc131\uc744 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\ubcc4 \ub370\uc774\ud130\ub098 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130\uc5d0 \ubb34\uc791\uc815 Cache\ub97c \uc801\uc6a9\ud558\uba74 \uc624\ub798\ub41c \ub370\uc774\ud130\ub098 \uc798\ubabb\ub41c \ub370\uc774\ud130\uac00 \ubc18\ud658\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Rate Limiting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \uc694\uccad \ube48\ub3c4\ub97c \uc81c\ud55c\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; \uc815\uc0c1 \uc694\uccad -&gt; API \/ \uacfc\ub3c4\ud55c \uc694\uccad -&gt; \uc81c\ud55c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub85c\uadf8\uc778 API\ub098 \ud2b9\uc815 Public API\ucc98\ub7fc \uc694\uccad\uc744 \uacfc\ub3c4\ud558\uac8c \ubcf4\ub0b4\uba74 \ubb38\uc81c\uac00 \ub418\ub294 Endpoint\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Rate Limiting\ub9cc\uc73c\ub85c \ubcf4\uc548 \ubb38\uc81c\uac00 \ubaa8\ub450 \ud574\uacb0\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Application Level\uc758 \uc778\uc99d\uacfc \uad8c\ud55c \uac80\uc99d\uc740 \ubcc4\ub3c4\ub85c \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc640 WAS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub97c \uc774\ud574\ud560 \ub54c WAS\uc640 \ud63c\ub3d9\ud558\uba74 \uc548 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx -&gt; Web Server \/ Reverse Proxy\nWAS -&gt; Application \uc2e4\ud589 \ud658\uacbd\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 Java Spring \uc11c\ubc84\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Spring Boot\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\uac00 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js\ub77c\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Node.js\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 Spring\uc774\ub098 Node.js\uc758 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ub300\uc2e0 \uc2e4\ud589\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc640 Application Server<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01\uc790\uc758 \uc5ed\ud560\uc744 \ubd84\ub9ac\ud558\uba74 \uc774\ud574\ud558\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx -&gt; HTTP \uc5f0\uacb0 \/ Reverse Proxy \/ Static File \/ TLS \/ Load Balancing \/ Cache \/ Rate Limiting\nApplication Server -&gt; \uc778\uc99d \/ \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \/ \ub370\uc774\ud130 \ucc98\ub9ac \/ DB \uc811\uadfc \/ \uac8c\uc784 \ub85c\uc9c1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/api\/player\/100 -&gt; Client -&gt; Nginx -&gt; \/api\/* -&gt; Application Server -&gt; \uc778\uc99d \/ Player \uc870\ud68c \/ DB \uc870\ud68c \/ JSON \uc0dd\uc131 -&gt; Nginx -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \uc5ed\ud560\uc744 \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc640 Database<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uad6c\uc870\uc5d0\uc11c\ub294 Nginx\uac00 Database\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Application Server -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Database \uc811\uadfc \uad8c\ud55c\uacfc \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc740 Application Server\uac00 \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub294 \ub124\ud2b8\uc6cc\ud06c \uc55e\ub2e8\uc758 Gateway\uc5d0 \uac00\uae4c\uc6b4 \uc5ed\ud560\uc744 \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx \uc124\uc815 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uc758 \uc124\uc815\uc740 \uacc4\uce35\uc801\uc778 \uad6c\uc870\ub97c \uac00\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uad6c\uc131\uc740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http -&gt; server -&gt; location\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http {\n    server {\n        listen 80;\n        server_name example.com;\n\n        location \/ {\n            root \/var\/www\/html;\n        }\n\n        location \/api\/ {\n            proxy_pass http:\/\/localhost:3000;\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub97c \ubcf4\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http -&gt; server -&gt; \/ -&gt; Static Files \/ \/api\/ -&gt; Application Server\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \uc774\ud574\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc758 \uc2e4\ubb34\uc801\uc778 \uc804\uccb4 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6f9 \uc11c\ube44\uc2a4\uc5d0\uc11c \ud754\ud788 \ubcfc \uc218 \uc788\ub294 \uad6c\uc870\ub97c \ud558\ub098\ub85c \ubb36\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Internet -&gt; Nginx -&gt; Static Files \/ API Server \/ WebSocket Server -&gt; Redis -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\ub97c \uc5ec\ub7ec \ub300 \uc0ac\uc6a9\ud55c\ub2e4\uba74<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Internet -&gt; Nginx -&gt; API 1 \/ API 2 \/ API 3 -&gt; Redis -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc Load Balancing\uc744 \uc801\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Docker \ud658\uacbd\uc5d0\uc11c\uc758 Nginx<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Docker\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 Nginx\ub97c \ubcc4\ub3c4\uc758 Container\ub85c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Docker Network -&gt; nginx \/ api \/ redis \/ postgres\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 <code>api<\/code> Container\ub85c \uc694\uccad\uc744 \uc804\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location \/api\/ {\n    proxy_pass http:\/\/api:3000;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c <code>api<\/code>\ub294 Docker Network\uc5d0\uc11c \ub2e4\ub978 Container\ub97c \uac00\ub9ac\ud0a4\ub294 \uc774\ub984\uc774 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\uc870\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx Container -&gt; API Container -&gt; PostgreSQL Container\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c Production\uc5d0\uc11c\ub294 Database\ub97c \ubcc4\ub3c4 \uc778\ud504\ub77c\ub85c \ubd84\ub9ac\ud558\ub294 \uacbd\uc6b0\ub3c4 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc640 Kubernetes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kubernetes \ud658\uacbd\uc5d0\uc11c\ub3c4 Nginx \uacc4\uc5f4\uc758 Reverse Proxy \ub610\ub294 Ingress Controller\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uac1c\ub150\uc740<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Internet -&gt; Ingress -&gt; Service -&gt; Pod\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud615\ud0dc\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uac00 Kubernetes \ub0b4\ubd80 Service\ub85c \ud2b8\ub798\ud53d\uc744 \uc804\ub2ec\ud558\ub294 \uad6c\uc870\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ucd5c\uc2e0 Kubernetes \ud658\uacbd\uc5d0\uc11c\ub294 Nginx Ingress Controller\ub9cc\uc774 \uc720\uc77c\ud55c \uc120\ud0dd\uc9c0\ub294 \uc544\ub2c8\ub2e4. Gateway API\ub098 \ub2e4\ub978 Ingress\/Gateway \uad6c\ud604\uccb4\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nginx\uc758 \ud575\uc2ec\uc744 \ud558\ub098\uc758 \ud750\ub984\uc73c\ub85c \ubcf4\uba74<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\ub97c \uac00\uc7a5 \ub2e8\uc21c\ud558\uac8c \ud45c\ud604\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP \/ HTTPS -&gt; Nginx -&gt; \uc815\uc801 \ud30c\uc77c\uc774\uba74 \uc9c1\uc811 \uc751\ub2f5 \/ API \uc694\uccad\uc774\uba74 Application Server \/ WebSocket\uc774\uba74 WebSocket Server \/ \uc5ec\ub7ec \uc11c\ubc84\ub77c\uba74 Load Balancing\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uadf8 \uc55e\ub4a4\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TLS \/ Logging \/ Caching \/ Compression \/ Rate Limiting \/ Header \ucc98\ub9ac \/ Timeout\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub4f1\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx\uc758 \uc5ed\ud560\uc744 \ud06c\uac8c \ub098\ub204\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Web Server -&gt; \uc815\uc801 \ud30c\uc77c \uc81c\uacf5\nReverse Proxy -&gt; Client \uc694\uccad\uc744 \ub0b4\ubd80 \uc11c\ubc84\ub85c \uc804\ub2ec\nLoad Balancer -&gt; \uc5ec\ub7ec \uc11c\ubc84\uc5d0 \uc694\uccad \ubd84\uc0b0\nTLS Termination -&gt; HTTPS \ucc98\ub9ac\nGateway -&gt; URL \/ Host \ub4f1\uc5d0 \ub530\ub978 \uc694\uccad \ub77c\uc6b0\ud305\nCache -&gt; \uc751\ub2f5 \uacb0\uacfc \uc800\uc7a5\nSecurity \/ Traffic Control -&gt; Rate Limiting, \uc811\uadfc \uc81c\uc5b4 \ub4f1\nLogging -&gt; \uc694\uccad\uacfc \uc624\ub958 \uae30\ub85d\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ubb34\uc5d0\uc11c\ub294 \ubcf4\ud1b5 \ub2e4\uc74c\uacfc \uac19\uc740 \ud615\ud0dc\ub85c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Static Files \/ API Server \/ WebSocket Server -&gt; Redis -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx \uc790\uccb4\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84\ub294 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nginx\ub294 \uc11c\ube44\uc2a4\uc758 \uac00\uc7a5 \uc55e\uc5d0\uc11c \uc678\ubd80 \uc694\uccad\uc744 \ubc1b\uc544 \uc801\uc808\ud55c \ub0b4\ubd80 \uc2dc\uc2a4\ud15c\uc73c\ub85c \uc804\ub2ec\ud558\uace0, \uadf8 \uacfc\uc815\uc5d0\uc11c \uc5f0\uacb0, \ubcf4\uc548, \uc815\uc801 \ud30c\uc77c, \ud2b8\ub798\ud53d \ubd84\uc0b0 \uac19\uc740 \uacf5\ud1b5\uc801\uc778 \ub124\ud2b8\uc6cc\ud06c \uc791\uc5c5\uc744 \ucc98\ub9ac\ud558\ub294 \uacc4\uce35<\/strong>\uc73c\ub85c \ubcf4\ub294 \uac83\uc774 \uac00\uc7a5 \uc815\ud655\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uc2e4\ubb34\uc5d0\uc11c\ub294<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Nginx -&gt; Application Server -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub77c\ub294 \uad6c\uc870\ub97c \uae30\ubcf8\uc73c\ub85c \uc774\ud574\ud558\uace0, \uc5ec\uae30\uc5d0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Load Balancing \/ Caching \/ WebSocket \/ Docker \/ Kubernetes \/ TLS \/ CI\/CD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \ud544\uc694\uc5d0 \ub530\ub77c \ucd94\uac00\ud55c\ub2e4\uace0 \uc0dd\uac01\ud558\uba74 \uc804\uccb4 \uad6c\uc870\ub97c \uc7a1\uae30 \uc27d\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nginx\ub294 \uace0\uc131\ub2a5 \uc6f9 \uc11c\ubc84(Web Server)\uc774\uc790 Reverse Proxy, Load Balancer, HTTP Cache, SSL\/TLS \uc885\ub8cc \uc9c0\uc810 \ub4f1\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc11c\ubc84 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub2e4. \ucc98\uc74c\uc5d0\ub294 \uc815\uc801 \ud30c\uc77c\uc744 \ube60\ub974\uac8c \uc81c\uacf5\ud558\uae30 \uc704\ud55c \uc6f9 \uc11c\ubc84\ub85c \uac1c\ubc1c\ub410\uc9c0\ub9cc, \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84 \uc55e\uc5d0 \ubc30\uce58\ud574\uc11c \uc678\ubd80 \uc694\uccad\uc744 \ubc1b\uc544 \ub0b4\ubd80 \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\ub294 Reverse Proxy \uc6a9\ub3c4\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4. \uc77c\ubc18\uc801\uc778 \uc6f9 \uc11c\ube44\uc2a4 \uad6c\uc870\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4. Nginx\uac00 \ubaa8\ub4e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[],"class_list":["post-1728","post","type-post","status-publish","format-standard","hentry","category-tools"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1728"}],"version-history":[{"count":2,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1728\/revisions"}],"predecessor-version":[{"id":2005,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1728\/revisions\/2005"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}