Search code examples
sshnginxsubdomain

How to configure nginx to make ssh server via subdomain.domain.tld:80 available


I want to make the ssh server on port 22 available through a subdomain on port 80.

I thought it should by something like this:

server {
    listen          ssh.domain.tld:80;
    server_name     ssh.domain.tld;

    location / {
        proxy_pass          http://localhost:22;
    }
}

But it won't work. nginx will accept this and start with this configuration, but I only get empty responses from ssh.domain.tld:80.

What am I missing?


Solution

  • 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 localhost:22;
    }
        server {
        listen        80;
        proxy_pass    ssh;
    } }
    

    https://www.nginx.com/resources/admin-guide/tcp-load-balancing/