1 min read

nginxでSSHのリバースプロキシ

nginx 1.9.0からngx_stream_core_moduleがサポートされるようになって可能になってたらしい

今頃知りました

リバースプロキシ用のnginxのコンフィグ

user hoge hoge;
worker_processes  auto;

events {
    ......
}

http {
    ......
}

stream {
    upstream git-ssh {
        server 10.0.0.15:29418;
    }
    server {
        listen 29418;
        proxy_pass git-ssh;
    }
}

こんなことができるようになってたらしい

私情

私は自分用のgitサーバーとしてGitbucketを利用している。

HTTPのアクセスはリバースプロキシ用のサーバーを経由させているのだが、SSHはリバースプロキシできなかったので、別途SSH用のサブドメインを用意してそちらから接続するようになっていた。

Git web: https://git.DOMAIN
Git ssh: ssh://git@git.ssh.DOMAIN

つまり上記のようになっていた。

しかしこれだと統一されてないしなんだかカッコ悪い。
そこでリバプロ鯖のnginxでSSHもリバースプロキシできないものかと模索したが当時はできなかった。

いつの間にか簡単にできるようになってて驚いたし、これでやっとgit.ssh.DOMAINを抜け出すことができる。

参考