From c2fdad8c6ba67414d5e3a6cb6320900e4fff601e Mon Sep 17 00:00:00 2001 From: rjbasitali Date: Tue, 27 Sep 2022 17:12:21 +0500 Subject: [PATCH] rp header --- content/posts/img/2021/reverse-proxy-header.png | Bin 0 -> 18074 bytes ...iting-your-own-reverse-proxy-using-golang.md | 1 + public/posts/img/2021/reverse-proxy-header.png | Bin 0 -> 18074 bytes .../index.html | 1 + 4 files changed, 2 insertions(+) create mode 100644 content/posts/img/2021/reverse-proxy-header.png create mode 100644 public/posts/img/2021/reverse-proxy-header.png diff --git a/content/posts/img/2021/reverse-proxy-header.png b/content/posts/img/2021/reverse-proxy-header.png new file mode 100644 index 0000000000000000000000000000000000000000..858811e335d4748f7c8325ec9d61ea62f2ef0634 GIT binary patch literal 18074 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 JVtK2u{{g+8r(FO5 literal 0 HcmV?d00001 diff --git a/content/posts/writing-your-own-reverse-proxy-using-golang.md b/content/posts/writing-your-own-reverse-proxy-using-golang.md index 1648b74..f0802cb 100644 --- a/content/posts/writing-your-own-reverse-proxy-using-golang.md +++ b/content/posts/writing-your-own-reverse-proxy-using-golang.md @@ -13,6 +13,7 @@ series = [] Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice. +![reverse proxy](/posts/img/2021/reverse-proxy-header.png) Let us first start with defining Reverse Proxy and its common uses. diff --git a/public/posts/img/2021/reverse-proxy-header.png b/public/posts/img/2021/reverse-proxy-header.png new file mode 100644 index 0000000000000000000000000000000000000000..858811e335d4748f7c8325ec9d61ea62f2ef0634 GIT binary patch literal 18074 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 JVtK2u{{g+8r(FO5 literal 0 HcmV?d00001 diff --git a/public/posts/writing-your-own-reverse-proxy-using-golang/index.html b/public/posts/writing-your-own-reverse-proxy-using-golang/index.html index 858767e..ef7b974 100644 --- a/public/posts/writing-your-own-reverse-proxy-using-golang/index.html +++ b/public/posts/writing-your-own-reverse-proxy-using-golang/index.html @@ -238,6 +238,7 @@ Reverse Proxy A Reverse Proxy is an intermediary server that sits between multip

Writing a Reverse Proxy server in Go is a matter of single digit lines of code due to its rock solid standard library and its low level network plumbing capabilities. Recently I came across some use cases where I needed to write my own Reverse Proxy server and of course Go was the pragmatic choice.

+

reverse proxy

Let us first start with defining Reverse Proxy and its common uses.

Reverse Proxy

A Reverse Proxy is an intermediary server that sits between multiple clients and servers, and directs client requests to appropriate backend server. It is commonly used for: