How to configure NGINX as a reverse proxy for different port numbers?

Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have NGINX configured like this as a reverse proxy for http requests:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
I also want to proxy ssh (Port 22) requests. Can I add another server block like this to the same configuration file:
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
Such that the end result is this:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
TIA,
Ole
nginx
add a comment |
I have NGINX configured like this as a reverse proxy for http requests:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
I also want to proxy ssh (Port 22) requests. Can I add another server block like this to the same configuration file:
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
Such that the end result is this:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
TIA,
Ole
nginx
2
nginxis acting as ahttpproxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - onlyhttptraffic to the SSH server, which will obviously fail.
– garethTheRed
Jun 16 '16 at 18:26
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41
add a comment |
I have NGINX configured like this as a reverse proxy for http requests:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
I also want to proxy ssh (Port 22) requests. Can I add another server block like this to the same configuration file:
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
Such that the end result is this:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
TIA,
Ole
nginx
I have NGINX configured like this as a reverse proxy for http requests:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
I also want to proxy ssh (Port 22) requests. Can I add another server block like this to the same configuration file:
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
Such that the end result is this:
server
listen 80;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:3000;
server
listen 22;
server_name 203.0.113.2;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location /
proxy_pass http://203.0.113.1:22;
TIA,
Ole
nginx
nginx
edited Mar 1 '18 at 22:06
Drakonoved
7031723
7031723
asked Jun 16 '16 at 18:07
OleOle
2581313
2581313
2
nginxis acting as ahttpproxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - onlyhttptraffic to the SSH server, which will obviously fail.
– garethTheRed
Jun 16 '16 at 18:26
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41
add a comment |
2
nginxis acting as ahttpproxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - onlyhttptraffic to the SSH server, which will obviously fail.
– garethTheRed
Jun 16 '16 at 18:26
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41
2
2
nginx is acting as a http proxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - only http traffic to the SSH server, which will obviously fail.– garethTheRed
Jun 16 '16 at 18:26
nginx is acting as a http proxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - only http traffic to the SSH server, which will obviously fail.– garethTheRed
Jun 16 '16 at 18:26
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41
add a comment |
2 Answers
2
active
oldest
votes
The ssh protocol is not based on HTTP, and, as such, cannot be proxied through the regular proxy_pass of ngx_http_proxy_module
However, recently, starting with nginx 1.9.0 (released as stable with 1.10.0 on 2016-04-26), nginx did gain support for doing TCP stream proxying, which means that if you have a recent-enough version of nginx, you can, in fact, proxy ssh connections with it (however, note that you wouldn't be able to add anything like the X-Real-IP to the proxied connection, as this is not based on HTTP).
For more information and examples, take a look at:
- http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
- https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/34958192#34958192
add a comment |
Since Nginx Version 1.9.0,NGINX support ngx_stream_core_module module, it should be enabled with the --with-stream.
When stream module is enable they are possible to ssh protocol tcp proxy
stream
upstream ssh
server 192.168.1.12:22;
server
listen 12345;
proxy_pass ssh;
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a formssh me@srv1.my.netandssh me@srv2.my.net- it would be great. It's protocol limitation (SSH won't give out DNS name client uses)
– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 forsrv1and 222 forsrv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g.,ssh user@example.org 'ssh user@192.168.5.1'.
– cnst
Oct 15 '18 at 15:33
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client hasHOSTheader so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.
– stamster
Oct 18 '18 at 10:17
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f290223%2fhow-to-configure-nginx-as-a-reverse-proxy-for-different-port-numbers%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
The ssh protocol is not based on HTTP, and, as such, cannot be proxied through the regular proxy_pass of ngx_http_proxy_module
However, recently, starting with nginx 1.9.0 (released as stable with 1.10.0 on 2016-04-26), nginx did gain support for doing TCP stream proxying, which means that if you have a recent-enough version of nginx, you can, in fact, proxy ssh connections with it (however, note that you wouldn't be able to add anything like the X-Real-IP to the proxied connection, as this is not based on HTTP).
For more information and examples, take a look at:
- http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
- https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/34958192#34958192
add a comment |
The ssh protocol is not based on HTTP, and, as such, cannot be proxied through the regular proxy_pass of ngx_http_proxy_module
However, recently, starting with nginx 1.9.0 (released as stable with 1.10.0 on 2016-04-26), nginx did gain support for doing TCP stream proxying, which means that if you have a recent-enough version of nginx, you can, in fact, proxy ssh connections with it (however, note that you wouldn't be able to add anything like the X-Real-IP to the proxied connection, as this is not based on HTTP).
For more information and examples, take a look at:
- http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
- https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/34958192#34958192
add a comment |
The ssh protocol is not based on HTTP, and, as such, cannot be proxied through the regular proxy_pass of ngx_http_proxy_module
However, recently, starting with nginx 1.9.0 (released as stable with 1.10.0 on 2016-04-26), nginx did gain support for doing TCP stream proxying, which means that if you have a recent-enough version of nginx, you can, in fact, proxy ssh connections with it (however, note that you wouldn't be able to add anything like the X-Real-IP to the proxied connection, as this is not based on HTTP).
For more information and examples, take a look at:
- http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
- https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/34958192#34958192
The ssh protocol is not based on HTTP, and, as such, cannot be proxied through the regular proxy_pass of ngx_http_proxy_module
However, recently, starting with nginx 1.9.0 (released as stable with 1.10.0 on 2016-04-26), nginx did gain support for doing TCP stream proxying, which means that if you have a recent-enough version of nginx, you can, in fact, proxy ssh connections with it (however, note that you wouldn't be able to add anything like the X-Real-IP to the proxied connection, as this is not based on HTTP).
For more information and examples, take a look at:
- http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
- https://stackoverflow.com/questions/34741571/nginx-tcp-forwarding-based-on-hostname/34958192#34958192
edited May 23 '17 at 12:40
Community♦
1
1
answered Jul 3 '16 at 22:51
cnstcnst
1,50021338
1,50021338
add a comment |
add a comment |
Since Nginx Version 1.9.0,NGINX support ngx_stream_core_module module, it should be enabled with the --with-stream.
When stream module is enable they are possible to ssh protocol tcp proxy
stream
upstream ssh
server 192.168.1.12:22;
server
listen 12345;
proxy_pass ssh;
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a formssh me@srv1.my.netandssh me@srv2.my.net- it would be great. It's protocol limitation (SSH won't give out DNS name client uses)
– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 forsrv1and 222 forsrv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g.,ssh user@example.org 'ssh user@192.168.5.1'.
– cnst
Oct 15 '18 at 15:33
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client hasHOSTheader so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.
– stamster
Oct 18 '18 at 10:17
add a comment |
Since Nginx Version 1.9.0,NGINX support ngx_stream_core_module module, it should be enabled with the --with-stream.
When stream module is enable they are possible to ssh protocol tcp proxy
stream
upstream ssh
server 192.168.1.12:22;
server
listen 12345;
proxy_pass ssh;
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a formssh me@srv1.my.netandssh me@srv2.my.net- it would be great. It's protocol limitation (SSH won't give out DNS name client uses)
– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 forsrv1and 222 forsrv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g.,ssh user@example.org 'ssh user@192.168.5.1'.
– cnst
Oct 15 '18 at 15:33
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client hasHOSTheader so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.
– stamster
Oct 18 '18 at 10:17
add a comment |
Since Nginx Version 1.9.0,NGINX support ngx_stream_core_module module, it should be enabled with the --with-stream.
When stream module is enable they are possible to ssh protocol tcp proxy
stream
upstream ssh
server 192.168.1.12:22;
server
listen 12345;
proxy_pass ssh;
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
Since Nginx Version 1.9.0,NGINX support ngx_stream_core_module module, it should be enabled with the --with-stream.
When stream module is enable they are possible to ssh protocol tcp proxy
stream
upstream ssh
server 192.168.1.12:22;
server
listen 12345;
proxy_pass ssh;
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
answered May 19 '17 at 16:48
Hendi FauziHendi Fauzi
6111
6111
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a formssh me@srv1.my.netandssh me@srv2.my.net- it would be great. It's protocol limitation (SSH won't give out DNS name client uses)
– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 forsrv1and 222 forsrv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g.,ssh user@example.org 'ssh user@192.168.5.1'.
– cnst
Oct 15 '18 at 15:33
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client hasHOSTheader so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.
– stamster
Oct 18 '18 at 10:17
add a comment |
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a formssh me@srv1.my.netandssh me@srv2.my.net- it would be great. It's protocol limitation (SSH won't give out DNS name client uses)
– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 forsrv1and 222 forsrv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g.,ssh user@example.org 'ssh user@192.168.5.1'.
– cnst
Oct 15 '18 at 15:33
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client hasHOSTheader so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.
– stamster
Oct 18 '18 at 10:17
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a form
ssh me@srv1.my.net and ssh me@srv2.my.net - it would be great. It's protocol limitation (SSH won't give out DNS name client uses)– stamster
Jan 26 '18 at 18:40
That's all nice feature of nginx - but IMHO it's useless when you want to have real reverse proxy like nginx does perfect job for HTTP. The thing is streams approach is simple NAT - so I'd rather do that task on edge router. What I would want/like to have here - is exact same feature set as HTTP reverse proxy. In other words, I have only one public IP address - thus port 22 is avail only for one machine - but if there was a way to distinguish requests in a form
ssh me@srv1.my.net and ssh me@srv2.my.net - it would be great. It's protocol limitation (SSH won't give out DNS name client uses)– stamster
Jan 26 '18 at 18:40
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 for
srv1 and 222 for srv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g., ssh user@example.org 'ssh user@192.168.5.1'.– cnst
Oct 15 '18 at 15:33
@stamster, you can already do almost the same thing, by either using different port numbers (e.g., 122 for
srv1 and 222 for srv2), or by using nested ssh sessions, where you first ssh into the public server/IP, and from there, ssh into the leaves; e.g., ssh user@example.org 'ssh user@192.168.5.1'.– cnst
Oct 15 '18 at 15:33
1
1
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client has
HOST header so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.– stamster
Oct 18 '18 at 10:17
No, the requirement/idea is to use default port (22 or any other service..) as destination port, and then to route traffic depending of DNS name or so. Just like we're all using nginx as a reverse web http proxy server, so each domain targets default ports 80, 443, and then nginx routes traffic depending on proxy rules. Of course client has
HOST header so it's easy to distinguish which site it targets... Nested SSH sessions are sort of solution but a messy one - that works though. I ended up with different ports on our edge network - good old NAT as the most KISS and reliable solution.– stamster
Oct 18 '18 at 10:17
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f290223%2fhow-to-configure-nginx-as-a-reverse-proxy-for-different-port-numbers%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
nginxis acting as ahttpproxy. If you set it to reverse proxy port 22 it won't allow you to pass SSH traffic - onlyhttptraffic to the SSH server, which will obviously fail.– garethTheRed
Jun 16 '16 at 18:26
Go check out HAProxy.
– user38810
Jul 4 '16 at 12:41