From bbf70f4a0690c8fd223ff92b2160c3b22458094f Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 14:50:08 +0900 Subject: [PATCH 01/10] =?UTF-8?q?fix:=20=EC=BD=98=EC=86=94=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/docker-compose.yml | 2 ++ backend/console-server/nginx.conf | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/backend/console-server/docker-compose.yml b/backend/console-server/docker-compose.yml index 066714cc..2f1bb05b 100644 --- a/backend/console-server/docker-compose.yml +++ b/backend/console-server/docker-compose.yml @@ -4,8 +4,10 @@ services: image: nginx:latest ports: - "80:80" + - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf + - /etc/letsencrypt:/etc/letsencrypt depends_on: - server-blue - server-green diff --git a/backend/console-server/nginx.conf b/backend/console-server/nginx.conf index 9c43fd50..3c965724 100644 --- a/backend/console-server/nginx.conf +++ b/backend/console-server/nginx.conf @@ -4,8 +4,24 @@ http { server server-green:3002 backup; } + # http를 https로 리디렉션 server { listen 80; + server_name watchducks_test.store; + + location / { + return 301 https://$host$request_uri; + } + } + + server { + listen 443 ssl; + server_name watchducks_test.store; + + ssl_certificate /etc/letsencrypt/live/watchducks_test.store/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/watchducks_test.store/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://console_server; From 49529e5fd69d75e1723799fdd1df8579e03d4145 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 14:59:36 +0900 Subject: [PATCH 02/10] =?UTF-8?q?fix:=20=EB=84=A4=ED=8A=B8=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/docker-compose.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/console-server/docker-compose.yml b/backend/console-server/docker-compose.yml index 2f1bb05b..c22142a9 100644 --- a/backend/console-server/docker-compose.yml +++ b/backend/console-server/docker-compose.yml @@ -11,6 +11,8 @@ services: depends_on: - server-blue - server-green + networks: + - app-network server-blue: image: ghcr.io/boostcampwm-2024/web35-watchducks/backend/console-server:latest @@ -26,6 +28,8 @@ services: interval: 10s timeout: 2s retries: 5 + networks: + - app-network server-green: image: ghcr.io/boostcampwm-2024/web35-watchducks/backend/console-server:latest @@ -41,3 +45,9 @@ services: interval: 10s timeout: 2s retries: 5 + networks: + - app-network + +networks: + app-network: + driver: bridge \ No newline at end of file From dbe0c72fddf26ad4da834efc23ac1b5b34d5deae Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 15:14:55 +0900 Subject: [PATCH 03/10] =?UTF-8?q?fix:=20=EC=84=9C=EB=B2=84=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/console-server/nginx.conf b/backend/console-server/nginx.conf index 3c965724..b0fae6fb 100644 --- a/backend/console-server/nginx.conf +++ b/backend/console-server/nginx.conf @@ -7,7 +7,7 @@ http { # http를 https로 리디렉션 server { listen 80; - server_name watchducks_test.store; + server_name watchducks-test.store; location / { return 301 https://$host$request_uri; From 0ab74230b0160053b662c942e20e657888e81421 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 15:19:11 +0900 Subject: [PATCH 04/10] =?UTF-8?q?fix:=20=EC=84=9C=EB=B2=84=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/console-server/nginx.conf b/backend/console-server/nginx.conf index b0fae6fb..68e999fa 100644 --- a/backend/console-server/nginx.conf +++ b/backend/console-server/nginx.conf @@ -18,8 +18,8 @@ http { listen 443 ssl; server_name watchducks_test.store; - ssl_certificate /etc/letsencrypt/live/watchducks_test.store/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/watchducks_test.store/privkey.pem; + ssl_certificate /etc/letsencrypt/live/watchducks-test.store/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/watchducks-test.store/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; From b1219659ee58405de36ba4e63cf31be0abef9edc Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 15:31:15 +0900 Subject: [PATCH 05/10] =?UTF-8?q?fix:=20=EB=84=A4=ED=8A=B8=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=20=EC=9D=B4=EB=A6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/console-server/docker-compose.yml b/backend/console-server/docker-compose.yml index c22142a9..3cfea514 100644 --- a/backend/console-server/docker-compose.yml +++ b/backend/console-server/docker-compose.yml @@ -50,4 +50,5 @@ services: networks: app-network: + name: app-network driver: bridge \ No newline at end of file From af708fc4dd84ac264722e2088725bb2c8f2ef0c6 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 15:47:26 +0900 Subject: [PATCH 06/10] =?UTF-8?q?fix:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/console-server/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/console-server/nginx.conf b/backend/console-server/nginx.conf index 68e999fa..b3da4e3f 100644 --- a/backend/console-server/nginx.conf +++ b/backend/console-server/nginx.conf @@ -16,10 +16,10 @@ http { server { listen 443 ssl; - server_name watchducks_test.store; + server_name watchducks-test.store; ssl_certificate /etc/letsencrypt/live/watchducks-test.store/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/watchducks-test.store/privkey.pem; + ssl_certificate_key /etc/letsencrypt/live/watchducks-test.store/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; From 8d5f1c95354050d9e5e5e820db6389df1431c1e7 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 16:21:12 +0900 Subject: [PATCH 07/10] =?UTF-8?q?fix:=20=ED=94=84=EB=A1=9D=EC=8B=9C=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20https=20=EB=84=98=EA=B8=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/proxy-server/src/server/proxy-server.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/proxy-server/src/server/proxy-server.ts b/backend/proxy-server/src/server/proxy-server.ts index d80c4aa2..0719b711 100644 --- a/backend/proxy-server/src/server/proxy-server.ts +++ b/backend/proxy-server/src/server/proxy-server.ts @@ -39,6 +39,9 @@ export class ProxyServer { connections: Number(process.env.DEFAULT_CONNECTIONS), pipelining: Number(process.env.DEFAULT_PIPELINING), keepAliveTimeout: Number(process.env.DEFAULT_KEEP_ALIVE), + connect: { + rejectUnauthorized: false, + }, }, }); } @@ -89,7 +92,7 @@ export class ProxyServer { private async executeProxyRequest(request: FastifyRequest, reply: FastifyReply): Promise { const host = validateHost(request.headers[HOST_HEADER]); const ip = await this.resolveDomain(host); - const targetUrl = buildTargetUrl(ip, request.url, 'http://'); // TODO: Protocol 별 arg 세팅 + const targetUrl = buildTargetUrl(ip, request.url, 'https://'); // TODO: Protocol 별 arg 세팅 await this.sendProxyRequest(targetUrl, request, reply); } @@ -114,6 +117,8 @@ export class ProxyServer { request: FastifyRequest, reply: FastifyReply, ): Promise { + const originalHost = request.headers[HOST_HEADER] as string; + await new Promise((resolve, reject) => { reply.from(targetUrl, { onError: (reply, error) => { @@ -125,6 +130,11 @@ export class ProxyServer { ), ); }, + + rewriteRequestHeaders: (req, headers) => ({ + ...headers, + host: originalHost, + }), }); }); } From 7ce5a090321b286c227533726b12c8043a41de25 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 16:23:11 +0900 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20=EC=9D=B4=EC=A0=84=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=EC=9C=BC=EB=A1=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/proxy-server/src/server/proxy-server.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/backend/proxy-server/src/server/proxy-server.ts b/backend/proxy-server/src/server/proxy-server.ts index 0719b711..d80c4aa2 100644 --- a/backend/proxy-server/src/server/proxy-server.ts +++ b/backend/proxy-server/src/server/proxy-server.ts @@ -39,9 +39,6 @@ export class ProxyServer { connections: Number(process.env.DEFAULT_CONNECTIONS), pipelining: Number(process.env.DEFAULT_PIPELINING), keepAliveTimeout: Number(process.env.DEFAULT_KEEP_ALIVE), - connect: { - rejectUnauthorized: false, - }, }, }); } @@ -92,7 +89,7 @@ export class ProxyServer { private async executeProxyRequest(request: FastifyRequest, reply: FastifyReply): Promise { const host = validateHost(request.headers[HOST_HEADER]); const ip = await this.resolveDomain(host); - const targetUrl = buildTargetUrl(ip, request.url, 'https://'); // TODO: Protocol 별 arg 세팅 + const targetUrl = buildTargetUrl(ip, request.url, 'http://'); // TODO: Protocol 별 arg 세팅 await this.sendProxyRequest(targetUrl, request, reply); } @@ -117,8 +114,6 @@ export class ProxyServer { request: FastifyRequest, reply: FastifyReply, ): Promise { - const originalHost = request.headers[HOST_HEADER] as string; - await new Promise((resolve, reject) => { reply.from(targetUrl, { onError: (reply, error) => { @@ -130,11 +125,6 @@ export class ProxyServer { ), ); }, - - rewriteRequestHeaders: (req, headers) => ({ - ...headers, - host: originalHost, - }), }); }); } From ca5df0301a54022bdaf91055e2b051d82fe63e44 Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 16:31:35 +0900 Subject: [PATCH 09/10] =?UTF-8?q?chore:=20=EB=94=94=EB=B2=84=EA=B9=85?= =?UTF-8?q?=EC=9A=A9=20ttl=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/name-server/src/server/utils/dns-response-builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/name-server/src/server/utils/dns-response-builder.ts b/backend/name-server/src/server/utils/dns-response-builder.ts index 21c5a24c..33662374 100644 --- a/backend/name-server/src/server/utils/dns-response-builder.ts +++ b/backend/name-server/src/server/utils/dns-response-builder.ts @@ -52,7 +52,7 @@ export class DNSResponseBuilder { name: question.name, type: 'A', class: 'IN', - ttl: 300, + ttl: 10, data: this.config.proxyServerIp, }, ]; From ca8a8105128791ff84b9a039b8dc05f72216151a Mon Sep 17 00:00:00 2001 From: sjy2335 Date: Thu, 14 Nov 2024 16:43:54 +0900 Subject: [PATCH 10/10] =?UTF-8?q?fix:=20=ED=94=84=EB=A1=9D=EC=8B=9C=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/proxy-server/src/server/proxy-server.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/proxy-server/src/server/proxy-server.ts b/backend/proxy-server/src/server/proxy-server.ts index d80c4aa2..9712aaec 100644 --- a/backend/proxy-server/src/server/proxy-server.ts +++ b/backend/proxy-server/src/server/proxy-server.ts @@ -39,6 +39,9 @@ export class ProxyServer { connections: Number(process.env.DEFAULT_CONNECTIONS), pipelining: Number(process.env.DEFAULT_PIPELINING), keepAliveTimeout: Number(process.env.DEFAULT_KEEP_ALIVE), + connect: { + rejectUnauthorized: false, + }, }, }); } @@ -89,7 +92,7 @@ export class ProxyServer { private async executeProxyRequest(request: FastifyRequest, reply: FastifyReply): Promise { const host = validateHost(request.headers[HOST_HEADER]); const ip = await this.resolveDomain(host); - const targetUrl = buildTargetUrl(ip, request.url, 'http://'); // TODO: Protocol 별 arg 세팅 + const targetUrl = buildTargetUrl(ip, request.url, 'https://'); // TODO: Protocol 별 arg 세팅 await this.sendProxyRequest(targetUrl, request, reply); }